├── .gitattributes ├── .gitignore ├── LICENSE ├── README.md ├── build.gradle ├── config └── src │ └── main │ └── groovy │ └── compiler-config.groovy ├── docs ├── assets │ ├── css │ │ ├── bootstrap.min.css │ │ ├── bootstrap.min.css.map │ │ ├── mircomp.css │ │ └── monokai.min.css │ ├── images │ │ ├── documentation.png │ │ ├── download.png │ │ ├── fork-github.png │ │ ├── logo.png │ │ ├── piano.png │ │ ├── screenshots │ │ │ ├── Bach-Invention1.png │ │ │ ├── FraMartino.png │ │ │ ├── FraMartinoMirIDE.png │ │ │ ├── Marche.png │ │ │ ├── MirIDE-start.png │ │ │ ├── accidentals.png │ │ │ ├── api.png │ │ │ ├── automatic-notes-split.png │ │ │ ├── automaton.png │ │ │ ├── chord-symbols.png │ │ │ ├── chords-inversions.png │ │ │ ├── chords-progression.png │ │ │ ├── controller-tab.png │ │ │ ├── genetic.png │ │ │ ├── instruments-tab.png │ │ │ ├── major-scale.png │ │ │ ├── midi-menubar-middle.png │ │ │ ├── midi-menubar-top.png │ │ │ ├── miride-hp.png │ │ │ ├── miride-menubar.png │ │ │ ├── mirmidi-hp.png │ │ │ ├── mirmidi-pianoroll.png │ │ │ ├── mirmidi.png │ │ │ ├── mirscore-menubar.2png │ │ │ ├── mirscore-menubar.png │ │ │ ├── mirscore-playback.png │ │ │ ├── mirscore.png │ │ │ ├── mirtext-hp.png │ │ │ ├── mirtext-menubar.png │ │ │ ├── mirtext.png │ │ │ ├── mirtext2.png │ │ │ ├── mirtext3.png │ │ │ ├── mysymbol.png │ │ │ ├── new-project-dialog.png │ │ │ ├── octave-marks.png │ │ │ ├── phrase.png │ │ │ ├── project-tree.png │ │ │ ├── properties-dialog.png │ │ │ ├── repeat-phrase.png │ │ │ ├── rests.png │ │ │ ├── scale.png │ │ │ ├── simple-chord.png │ │ │ ├── synth.png │ │ │ ├── tempo-tab.png │ │ │ ├── tied-notes.png │ │ │ ├── transpose-phrase.png │ │ │ ├── triplet.png │ │ │ ├── universal-key.png │ │ │ ├── unpitched-rhythm.png │ │ │ └── zip-phrase-pattern.png │ │ └── sitelogo.png │ └── js │ │ ├── bootstrap.min.js │ │ ├── bootstrap.min.js.map │ │ ├── clojure.min.js │ │ ├── highlight.min.js │ │ ├── java.min.js │ │ └── mircomp.js ├── documentation.html ├── download.html ├── framework.html ├── getting_started.html ├── index.html ├── mirchord.html ├── mirchord_ext.html ├── mirmidi.html ├── mirscore.html └── soundfonts.html ├── draft └── workflows │ └── build.yml ├── examples └── Example1 │ ├── config.xml │ ├── mirchords │ ├── Arioso.mirchord │ ├── FraMartino.mirchord │ ├── Inno_alla_gioia.mirchord │ ├── Invention1_JSBach.mirchord │ ├── Marche-CPEBach.mirchord │ └── Unpitched.mirchord │ ├── mirgrams │ ├── melchordsym.mirgram │ └── score.mirgram │ └── src │ ├── JustIntonation.groovy │ ├── builder │ ├── AutoMeasureSepExample.groovy │ ├── InstrumentChangeExample.groovy │ ├── Marche.groovy │ └── TripletsExample.groovy │ ├── fo.groovy │ ├── ge │ ├── buildDataset.groovy │ ├── chordProgMelody.groovy │ └── melodyGE.groovy │ └── ip.groovy ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── libs ├── lingwah.jar └── zong-all.jar ├── licenses ├── AceEditor-LICENSE ├── AtlantaFX-LICENSE ├── CrystalProject-LICENSE ├── Groovy-LICENSE ├── Lingwah-LICENSE ├── RichTextFx-LICENSE └── Zong-LICENSE ├── mirchord ├── build.gradle └── src │ └── main │ └── groovy │ ├── io │ └── github │ │ └── mcolletta │ │ └── mirchord │ │ ├── core │ │ ├── Chord.groovy │ │ ├── ChordSymbol.groovy │ │ ├── Instrument.groovy │ │ ├── Music.groovy │ │ ├── ScoreBuilder.groovy │ │ └── Utils.groovy │ │ ├── interpreter │ │ ├── Grammar.groovy │ │ ├── GroovyScriptInterpreter.groovy │ │ ├── Interpreter.groovy │ │ └── Processor.groovy │ │ └── io │ │ ├── Listeners.groovy │ │ └── Readers.groovy │ └── utils │ ├── Importers.groovy │ └── MChainFile.groovy ├── mircomposer ├── .gitignore ├── build.gradle └── src │ └── main │ └── groovy │ └── io │ └── github │ └── mcolletta │ └── mircomposer │ ├── ConfigEditor.groovy │ ├── ConfigurationManager.groovy │ ├── DraggableTabs.groovy │ ├── Editor.fxml │ ├── Editor.groovy │ ├── MirChordEditor.groovy │ ├── MirComposer.groovy │ ├── Utils.groovy │ ├── UtilsFx.groovy │ ├── resources │ ├── icons │ │ ├── checkedclipboard.png │ │ ├── edit.png │ │ ├── fileopen.png │ │ ├── folder_new.png │ │ ├── locked.png │ │ ├── mix_audio.png │ │ ├── project_open.png │ │ ├── reload.png │ │ ├── runprog.png │ │ ├── sc_controlproperties.png │ │ ├── stop.png │ │ ├── view_sidetree.png │ │ ├── view_tree.png │ │ ├── window_new.png │ │ └── xconsole.png │ ├── images │ │ └── logo.png │ └── info.txt │ └── styles.css ├── mirconverter ├── build.gradle └── src │ └── main │ └── groovy │ └── io │ └── github │ └── mcolletta │ └── mirconverter │ ├── Helper.groovy │ ├── Listeners.groovy │ ├── Utils.groovy │ └── ZongConverter.groovy ├── mircoracle ├── README.md ├── build.gradle └── src │ ├── main │ └── groovy │ │ └── io │ │ └── github │ │ └── mcolletta │ │ └── mircoracle │ │ ├── Compressor.groovy │ │ ├── ContinuationDictionary.groovy │ │ ├── Demo.groovy │ │ ├── FactorOracle.groovy │ │ ├── OracleNavigator.groovy │ │ └── TreeDictionary.groovy │ └── test │ └── groovy │ └── io │ └── github │ └── mcolletta │ └── mircoracle │ ├── OracleTests.groovy │ └── PredictorTests.groovy ├── mirdaw ├── build.gradle ├── config │ └── src │ │ └── main │ │ └── groovy │ │ └── compiler-config.groovy ├── settings.gradle └── src │ └── main │ ├── groovy │ └── io │ │ └── github │ │ └── mcolletta │ │ └── mirdaw │ │ ├── ControllerEditor.groovy │ │ ├── Instrument.groovy │ │ ├── InstrumentsEditor.groovy │ │ ├── MidiEditor.fxml │ │ ├── MidiEditor.groovy │ │ ├── MidiManager.groovy │ │ ├── MidiTableView.fxml │ │ ├── MidiTableView.groovy │ │ ├── MidiView.groovy │ │ ├── MirDAW.groovy │ │ ├── PianoKeyboard.groovy │ │ ├── PianoRollEditor.groovy │ │ ├── ResizableRegion.groovy │ │ ├── TempoEditor.groovy │ │ ├── resources │ │ ├── icons │ │ │ ├── color_line.png │ │ │ ├── colorman.png │ │ │ ├── enumlist1.png │ │ │ ├── eraser.png │ │ │ ├── fileopen.png │ │ │ ├── insert_table_row.png │ │ │ ├── kcmmidi.png │ │ │ ├── kmixdocked_mute.png │ │ │ ├── mini_autoform.png │ │ │ ├── mix_midi.png │ │ │ ├── move.png │ │ │ ├── new_window.png │ │ │ ├── player_eject.png │ │ │ ├── player_end.png │ │ │ ├── player_fwd.png │ │ │ ├── player_pause.png │ │ │ ├── player_play.png │ │ │ ├── player_rew.png │ │ │ ├── player_start.png │ │ │ ├── player_stop.png │ │ │ ├── player_time.png │ │ │ ├── redo.png │ │ │ ├── reload.png │ │ │ ├── sc_aligncenter.png │ │ │ ├── sc_arrowshapes.striped-right-arrow.png │ │ │ ├── sc_autoformat.png │ │ │ ├── sc_beziersmooth.png │ │ │ ├── sc_beziersmooth2.png │ │ │ ├── sc_connectorline.png │ │ │ ├── sc_firstrecord.png │ │ │ ├── sc_freeline.png │ │ │ ├── sc_lastrecord.png │ │ │ ├── sc_nextrecord.png │ │ │ ├── sc_prevrecord.png │ │ │ ├── sc_save.png │ │ │ ├── sc_saveas.png │ │ │ ├── sc_selectobject.png │ │ │ ├── sc_selecttable.png │ │ │ ├── sc_spinbutton.png │ │ │ ├── sc_toggleaxisdescr.png │ │ │ ├── sc_zoom100percent.png │ │ │ ├── sc_zoomin.png │ │ │ ├── sc_zoomout.png │ │ │ └── undo.png │ │ └── themes │ │ │ ├── cupertino-dark.css │ │ │ ├── cupertino-light.css │ │ │ ├── nord-dark.css │ │ │ ├── nord-light.css │ │ │ ├── primer-dark.css │ │ │ └── primer-light.css │ │ └── styles.css │ └── java │ ├── Main.java │ └── module-info.java ├── mirfoldertreeview ├── .gitignore ├── build.gradle └── src │ └── main │ └── groovy │ └── io │ └── github │ └── mcolletta │ └── mirfoldertreeview │ ├── Demo.groovy │ ├── FolderTreeView.fxml │ ├── FolderTreeView.groovy │ ├── PathTreeCell.groovy │ ├── WatchFolderTask.groovy │ ├── resources │ └── icons │ │ ├── cdaudio_mount.png │ │ ├── file_doc.png │ │ ├── folder.png │ │ ├── groovy.png │ │ ├── java.png │ │ ├── midi.png │ │ ├── mix_audio.png │ │ ├── mix_midi.png │ │ ├── music.png │ │ ├── pdf.png │ │ ├── sc_open.png │ │ ├── tar.png │ │ └── xml.png │ └── styles.css ├── mirgene ├── .gitignore ├── README.md ├── build.gradle └── src │ ├── main │ └── groovy │ │ └── io │ │ └── github │ │ └── mcolletta │ │ └── mirgene │ │ ├── Demo.groovy │ │ ├── Expression.groovy │ │ ├── Fitness.groovy │ │ ├── Grammar.groovy │ │ ├── Individual.groovy │ │ ├── MirGene.groovy │ │ └── MirGram.groovy │ └── test │ └── groovy │ └── io │ └── github │ └── mcolletta │ └── mirgene │ ├── GrammarTests.groovy │ ├── GrammaticalEvolutionTests.groovy │ └── resources │ └── grammars │ ├── chordprogression.mirgram │ ├── chordprogression2.mirgram │ ├── melody.mirgram │ ├── symreg.mirgram │ └── test.mirgram ├── miride ├── .gitignore ├── build.gradle └── src │ └── main │ └── groovy │ └── io │ └── github │ └── mcolletta │ └── miride │ ├── ConfigEditor.groovy │ ├── ConfigurationManager.groovy │ ├── DraggableTabs.groovy │ ├── Editor.fxml │ ├── Editor.groovy │ ├── InterpreterTypeCheckingExtension.groovy │ ├── MirChordEditor.groovy │ ├── MirIDE.groovy │ ├── NewProjectDialog.groovy │ ├── ProjectInterpreter.groovy │ ├── Utils.groovy │ ├── UtilsFx.groovy │ ├── resources │ ├── icons │ │ ├── checkedclipboard.png │ │ ├── edit.png │ │ ├── fileopen.png │ │ ├── folder_new.png │ │ ├── locked.png │ │ ├── mix_audio.png │ │ ├── project_open.png │ │ ├── reload.png │ │ ├── runprog.png │ │ ├── sc_controlproperties.png │ │ ├── stop.png │ │ ├── view_sidetree.png │ │ ├── view_tree.png │ │ ├── window_new.png │ │ └── xconsole.png │ ├── images │ │ └── logo.png │ ├── info.txt │ └── themes │ │ ├── cupertino-dark.css │ │ ├── cupertino-light.css │ │ ├── nord-dark.css │ │ ├── nord-light.css │ │ ├── primer-dark.css │ │ └── primer-light.css │ └── styles.css ├── mirmidi ├── .gitignore ├── build.gradle └── src │ └── main │ └── groovy │ └── io │ └── github │ └── mcolletta │ └── mirmidi │ ├── ControllerEditor.groovy │ ├── Demo.groovy │ ├── InstrumentsEditor.groovy │ ├── MidiEditor.fxml │ ├── MidiEditor.groovy │ ├── MidiManager.groovy │ ├── MidiTableView.fxml │ ├── MidiTableViewController.groovy │ ├── MidiView.groovy │ ├── PianoRollEditor.groovy │ ├── ResizableCanvas.groovy │ ├── TempoEditor.groovy │ ├── resources │ └── icons │ │ ├── color_line.png │ │ ├── colorman.png │ │ ├── enumlist1.png │ │ ├── eraser.png │ │ ├── fileopen.png │ │ ├── insert_table_row.png │ │ ├── kcmmidi.png │ │ ├── kmixdocked_mute.png │ │ ├── mini_autoform.png │ │ ├── mix_midi.png │ │ ├── move.png │ │ ├── new_window.png │ │ ├── player_eject.png │ │ ├── player_end.png │ │ ├── player_fwd.png │ │ ├── player_pause.png │ │ ├── player_play.png │ │ ├── player_rew.png │ │ ├── player_start.png │ │ ├── player_stop.png │ │ ├── player_time.png │ │ ├── redo.png │ │ ├── reload.png │ │ ├── sc_aligncenter.png │ │ ├── sc_arrowshapes.striped-right-arrow.png │ │ ├── sc_autoformat.png │ │ ├── sc_beziersmooth.png │ │ ├── sc_beziersmooth2.png │ │ ├── sc_connectorline.png │ │ ├── sc_firstrecord.png │ │ ├── sc_freeline.png │ │ ├── sc_lastrecord.png │ │ ├── sc_nextrecord.png │ │ ├── sc_prevrecord.png │ │ ├── sc_save.png │ │ ├── sc_saveas.png │ │ ├── sc_selectobject.png │ │ ├── sc_selecttable.png │ │ ├── sc_spinbutton.png │ │ ├── sc_toggleaxisdescr.png │ │ ├── sc_zoom100percent.png │ │ ├── sc_zoomin.png │ │ ├── sc_zoomout.png │ │ └── undo.png │ └── styles.css ├── mirscore ├── .gitignore ├── build.gradle └── src │ └── main │ └── groovy │ └── io │ └── github │ └── mcolletta │ └── mirscore │ ├── Demo.groovy │ ├── MidiScorePlayer.groovy │ ├── Playback.groovy │ ├── ScoreModel.groovy │ ├── ScoreViewer.fxml │ ├── ScoreViewer.groovy │ ├── resources │ └── icons │ │ ├── fileopen.png │ │ ├── move.png │ │ ├── player_eject.png │ │ ├── player_end.png │ │ ├── player_fwd.png │ │ ├── player_pause.png │ │ ├── player_play.png │ │ ├── player_rew.png │ │ ├── player_start.png │ │ ├── player_stop.png │ │ ├── player_time.png │ │ ├── sc_arrowshapes.striped-right-arrow.png │ │ ├── sc_firstpage.png │ │ ├── sc_firstrecord.png │ │ ├── sc_lastpage.png │ │ ├── sc_lastrecord.png │ │ ├── sc_nextrecord.png │ │ ├── sc_prevrecord.png │ │ ├── sc_save.png │ │ ├── sc_saveas.png │ │ ├── sc_selectobject.png │ │ ├── sc_zoom100percent.png │ │ ├── sc_zoomin.png │ │ └── sc_zoomout.png │ └── styles.css ├── mirsynth ├── build.gradle └── src │ └── main │ └── groovy │ └── io │ └── github │ └── mcolletta │ └── mirsynth │ ├── Complex.groovy │ ├── DSP │ ├── BiquadFilter.groovy │ ├── Envelope.groovy │ ├── Filter.groovy │ ├── MirOscillator.groovy │ ├── MirSynth.groovy │ ├── Utils.groovy │ ├── instruments │ │ ├── AdditiveOscillator.groovy │ │ ├── DoubleFrequencyModulationSynthOscillator.groovy │ │ ├── FrequencyModulationOscillator.groovy │ │ └── SubtractiveOscillator.groovy │ └── oscillators │ │ ├── AdditiveSynth.groovy │ │ ├── DoubleFrequencyModulationSynth.groovy │ │ ├── FrequencyModulationSynth.groovy │ │ └── SubtractiveSynth.groovy │ ├── DigitalSignal.groovy │ ├── ExampleOscillators.groovy │ ├── FastFourierTransform.groovy │ ├── PlotUtils.groovy │ ├── SimpleMidiPlayer.groovy │ ├── SynthManager.groovy │ └── resources │ └── midi │ └── Invention.mid ├── mirtext ├── .gitignore ├── build.gradle └── src │ └── main │ └── groovy │ └── io │ └── github │ └── mcolletta │ └── mirtext │ ├── Demo.groovy │ ├── Mode.groovy │ ├── TextEditor.fxml │ ├── TextEditor.groovy │ ├── Theme.groovy │ ├── resources │ ├── ace │ │ ├── editor.html │ │ ├── editor.template │ │ └── third-party │ │ │ ├── ace.js │ │ │ ├── ext-beautify.js │ │ │ ├── ext-chromevox.js │ │ │ ├── ext-code_lens.js │ │ │ ├── ext-elastic_tabstops_lite.js │ │ │ ├── ext-emmet.js │ │ │ ├── ext-error_marker.js │ │ │ ├── ext-hardwrap.js │ │ │ ├── ext-keybinding_menu.js │ │ │ ├── ext-language_tools.js │ │ │ ├── ext-linking.js │ │ │ ├── ext-modelist.js │ │ │ ├── ext-old_ie.js │ │ │ ├── ext-options.js │ │ │ ├── ext-prompt.js │ │ │ ├── ext-rtl.js │ │ │ ├── ext-searchbox.js │ │ │ ├── ext-settings_menu.js │ │ │ ├── ext-spellcheck.js │ │ │ ├── ext-split.js │ │ │ ├── ext-static_highlight.js │ │ │ ├── ext-statusbar.js │ │ │ ├── ext-textarea.js │ │ │ ├── ext-themelist.js │ │ │ ├── ext-whitespace.js │ │ │ ├── keybinding-emacs.js │ │ │ ├── keybinding-sublime.js │ │ │ ├── keybinding-vim.js │ │ │ ├── keybinding-vscode.js │ │ │ ├── mode-abc.js │ │ │ ├── mode-batchfile.js │ │ │ ├── mode-diff.js │ │ │ ├── mode-dot.js │ │ │ ├── mode-groovy.js │ │ │ ├── mode-java.js │ │ │ ├── mode-javascript.js │ │ │ ├── mode-json.js │ │ │ ├── mode-jsp.js │ │ │ ├── mode-latex.js │ │ │ ├── mode-mirchord.js │ │ │ ├── mode-praat.js │ │ │ ├── mode-sh.js │ │ │ ├── mode-tex.js │ │ │ ├── mode-text.js │ │ │ ├── mode-xml.js │ │ │ ├── mode-yaml.js │ │ │ ├── snippets │ │ │ ├── abc.js │ │ │ ├── groovy.js │ │ │ ├── plain_text.js │ │ │ ├── praat.js │ │ │ ├── xml.js │ │ │ └── yaml.js │ │ │ ├── theme-ambiance.js │ │ │ ├── theme-chaos.js │ │ │ ├── theme-chrome.js │ │ │ ├── theme-clouds.js │ │ │ ├── theme-clouds_midnight.js │ │ │ ├── theme-cobalt.js │ │ │ ├── theme-crimson_editor.js │ │ │ ├── theme-dawn.js │ │ │ ├── theme-dreamweaver.js │ │ │ ├── theme-eclipse.js │ │ │ ├── theme-github.js │ │ │ ├── theme-gob.js │ │ │ ├── theme-gruvbox.js │ │ │ ├── theme-idle_fingers.js │ │ │ ├── theme-iplastic.js │ │ │ ├── theme-katzenmilch.js │ │ │ ├── theme-kr_theme.js │ │ │ ├── theme-kuroir.js │ │ │ ├── theme-merbivore.js │ │ │ ├── theme-merbivore_soft.js │ │ │ ├── theme-mono_industrial.js │ │ │ ├── theme-monokai.js │ │ │ ├── theme-nord_dark.js │ │ │ ├── theme-one_dark.js │ │ │ ├── theme-pastel_on_dark.js │ │ │ ├── theme-solarized_dark.js │ │ │ ├── theme-solarized_light.js │ │ │ ├── theme-sqlserver.js │ │ │ ├── theme-terminal.js │ │ │ ├── theme-textmate.js │ │ │ ├── theme-tomorrow.js │ │ │ ├── theme-tomorrow_night.js │ │ │ ├── theme-tomorrow_night_blue.js │ │ │ ├── theme-tomorrow_night_bright.js │ │ │ ├── theme-tomorrow_night_eighties.js │ │ │ ├── theme-twilight.js │ │ │ ├── theme-vibrant_ink.js │ │ │ ├── theme-xcode.js │ │ │ ├── worker-base.js │ │ │ ├── worker-css.js │ │ │ ├── worker-html.js │ │ │ ├── worker-javascript.js │ │ │ ├── worker-json.js │ │ │ └── worker-xml.js │ └── icons │ │ ├── colorize.png │ │ ├── comment.png │ │ ├── editclear.png │ │ ├── editcopy.png │ │ ├── editcut.png │ │ ├── editpaste.png │ │ ├── filefind.png │ │ ├── fileopen.png │ │ ├── filesave.png │ │ ├── filesaveas.png │ │ ├── find.png │ │ ├── fonts.png │ │ ├── fontsizedown.png │ │ ├── fontsizeup.png │ │ ├── gear.png │ │ ├── redo.png │ │ ├── reload.png │ │ ├── sc_reload.png │ │ ├── sc_save.png │ │ ├── sc_saveas.png │ │ ├── templates.png │ │ └── undo.png │ └── styles.css ├── mirtextfx ├── .gitignore ├── build.gradle └── src │ └── main │ └── groovy │ └── io │ └── github │ └── mcolletta │ └── mirtextfx │ ├── Demo.groovy │ ├── TextEditor.fxml │ ├── TextEditor.groovy │ ├── languages │ ├── GroovySyntaxHighlighter.groovy │ ├── MirchordSyntaxHighlighter.groovy │ ├── Mode.groovy │ ├── SyntaxHighlighter.groovy │ └── Theme.groovy │ ├── resources │ ├── bright.css │ ├── icons │ │ ├── colorize.png │ │ ├── comment.png │ │ ├── editclear.png │ │ ├── editcopy.png │ │ ├── editcut.png │ │ ├── editpaste.png │ │ ├── filefind.png │ │ ├── fileopen.png │ │ ├── filesave.png │ │ ├── filesaveas.png │ │ ├── find.png │ │ ├── fonts.png │ │ ├── fontsizedown.png │ │ ├── fontsizeup.png │ │ ├── gear.png │ │ ├── redo.png │ │ ├── reload.png │ │ ├── sc_reload.png │ │ ├── sc_save.png │ │ ├── sc_saveas.png │ │ ├── templates.png │ │ └── undo.png │ └── monokai.css │ └── styles.css ├── mirutils ├── build.gradle └── src │ └── main │ └── groovy │ └── io │ └── github │ └── mcolletta │ └── mirutils │ └── TabContent.groovy ├── resources ├── MC ├── icon.png └── images │ ├── Screenshot1.png │ ├── Screenshot2.png │ ├── Screenshot3.png │ └── ScreenshotDemoApp.png ├── settings.gradle └── tools └── buildsite ├── site ├── content │ ├── documentation.html │ ├── download.html │ ├── framework.html │ ├── getting_started.html │ ├── index.html │ ├── mirchord.html │ ├── mirchord_ext.html │ ├── mirmidi.html │ ├── mirscore.html │ └── soundfonts.html └── site.template └── sitegen.groovy /.gitattributes: -------------------------------------------------------------------------------- 1 | mode-mirchord.js linguist-vendored=false 2 | miride/src/main/groovy/io/github/mcolletta/miride/resources/themes/** linguist-vendored 3 | mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/themes/** linguist-vendored 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.class 2 | Thumbs.db 3 | 4 | # Package Files # 5 | # *.jar 6 | *.war 7 | *.ear 8 | 9 | # Directories # 10 | .metadata 11 | .metadata* 12 | .recommenders 13 | .gradle 14 | bin 15 | build 16 | /doc 17 | 18 | 19 | # Eclipse settings (should be generated with Gradle import in Eclipse) 20 | .project 21 | .classpath 22 | .settings 23 | 24 | # IntelliJ IDEA settings (should be generated with Gradle import in Eclipse) 25 | .idea 26 | *.iml -------------------------------------------------------------------------------- /config/src/main/groovy/compiler-config.groovy: -------------------------------------------------------------------------------- 1 | import groovy.transform.CompileStatic 2 | 3 | withConfig(configuration) { 4 | ast(CompileStatic) 5 | } 6 | -------------------------------------------------------------------------------- /docs/assets/css/mircomp.css: -------------------------------------------------------------------------------- 1 | 2 | .spaced { 3 | margin: 35px 0; 4 | } 5 | 6 | .x-scroll { 7 | overflow-x: scroll; 8 | } 9 | 10 | .mircomp-logo { 11 | display: inline-block; 12 | } 13 | 14 | .vintage-font { 15 | font-family: fixedsys, monospace; 16 | } 17 | 18 | .b-heroes-divider { 19 | width: 100%; 20 | height: 1rem; 21 | background-color: rgba(0, 0, 0, .1); 22 | border: solid rgba(0, 0, 0, .15); 23 | border-width: 1px 0; 24 | box-shadow: inset 0 .5em 1.5em rgba(0, 0, 0, .1), inset 0 .125em .5em rgba(0, 0, 0, .15); 25 | } 26 | 27 | .page-header { 28 | padding-bottom: 9px; 29 | margin: 40px 0 20px; 30 | border-bottom: 1px solid #eee; 31 | } 32 | -------------------------------------------------------------------------------- /docs/assets/css/monokai.min.css: -------------------------------------------------------------------------------- 1 | pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#272822;color:#ddd}.hljs-keyword,.hljs-literal,.hljs-name,.hljs-selector-tag,.hljs-strong,.hljs-tag{color:#f92672}.hljs-code{color:#66d9ef}.hljs-attribute,.hljs-link,.hljs-regexp,.hljs-symbol{color:#bf79db}.hljs-addition,.hljs-built_in,.hljs-bullet,.hljs-emphasis,.hljs-section,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-string,.hljs-subst,.hljs-template-tag,.hljs-template-variable,.hljs-title,.hljs-type,.hljs-variable{color:#a6e22e}.hljs-class .hljs-title,.hljs-title.class_{color:#fff}.hljs-comment,.hljs-deletion,.hljs-meta,.hljs-quote{color:#75715e}.hljs-doctag,.hljs-keyword,.hljs-literal,.hljs-section,.hljs-selector-id,.hljs-selector-tag,.hljs-title,.hljs-type{font-weight:700} -------------------------------------------------------------------------------- /docs/assets/images/documentation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/docs/assets/images/documentation.png -------------------------------------------------------------------------------- /docs/assets/images/download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/docs/assets/images/download.png -------------------------------------------------------------------------------- /docs/assets/images/fork-github.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/docs/assets/images/fork-github.png -------------------------------------------------------------------------------- /docs/assets/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/docs/assets/images/logo.png -------------------------------------------------------------------------------- /docs/assets/images/piano.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/docs/assets/images/piano.png -------------------------------------------------------------------------------- /docs/assets/images/screenshots/Bach-Invention1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/docs/assets/images/screenshots/Bach-Invention1.png -------------------------------------------------------------------------------- /docs/assets/images/screenshots/FraMartino.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/docs/assets/images/screenshots/FraMartino.png -------------------------------------------------------------------------------- /docs/assets/images/screenshots/FraMartinoMirIDE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/docs/assets/images/screenshots/FraMartinoMirIDE.png -------------------------------------------------------------------------------- /docs/assets/images/screenshots/Marche.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/docs/assets/images/screenshots/Marche.png -------------------------------------------------------------------------------- /docs/assets/images/screenshots/MirIDE-start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/docs/assets/images/screenshots/MirIDE-start.png -------------------------------------------------------------------------------- /docs/assets/images/screenshots/accidentals.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/docs/assets/images/screenshots/accidentals.png -------------------------------------------------------------------------------- /docs/assets/images/screenshots/api.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/docs/assets/images/screenshots/api.png -------------------------------------------------------------------------------- /docs/assets/images/screenshots/automatic-notes-split.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/docs/assets/images/screenshots/automatic-notes-split.png -------------------------------------------------------------------------------- /docs/assets/images/screenshots/automaton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/docs/assets/images/screenshots/automaton.png -------------------------------------------------------------------------------- /docs/assets/images/screenshots/chord-symbols.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/docs/assets/images/screenshots/chord-symbols.png -------------------------------------------------------------------------------- /docs/assets/images/screenshots/chords-inversions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/docs/assets/images/screenshots/chords-inversions.png -------------------------------------------------------------------------------- /docs/assets/images/screenshots/chords-progression.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/docs/assets/images/screenshots/chords-progression.png -------------------------------------------------------------------------------- /docs/assets/images/screenshots/controller-tab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/docs/assets/images/screenshots/controller-tab.png -------------------------------------------------------------------------------- /docs/assets/images/screenshots/genetic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/docs/assets/images/screenshots/genetic.png -------------------------------------------------------------------------------- /docs/assets/images/screenshots/instruments-tab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/docs/assets/images/screenshots/instruments-tab.png -------------------------------------------------------------------------------- /docs/assets/images/screenshots/major-scale.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/docs/assets/images/screenshots/major-scale.png -------------------------------------------------------------------------------- /docs/assets/images/screenshots/midi-menubar-middle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/docs/assets/images/screenshots/midi-menubar-middle.png -------------------------------------------------------------------------------- /docs/assets/images/screenshots/midi-menubar-top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/docs/assets/images/screenshots/midi-menubar-top.png -------------------------------------------------------------------------------- /docs/assets/images/screenshots/miride-hp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/docs/assets/images/screenshots/miride-hp.png -------------------------------------------------------------------------------- /docs/assets/images/screenshots/miride-menubar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/docs/assets/images/screenshots/miride-menubar.png -------------------------------------------------------------------------------- /docs/assets/images/screenshots/mirmidi-hp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/docs/assets/images/screenshots/mirmidi-hp.png -------------------------------------------------------------------------------- /docs/assets/images/screenshots/mirmidi-pianoroll.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/docs/assets/images/screenshots/mirmidi-pianoroll.png -------------------------------------------------------------------------------- /docs/assets/images/screenshots/mirmidi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/docs/assets/images/screenshots/mirmidi.png -------------------------------------------------------------------------------- /docs/assets/images/screenshots/mirscore-menubar.2png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/docs/assets/images/screenshots/mirscore-menubar.2png -------------------------------------------------------------------------------- /docs/assets/images/screenshots/mirscore-menubar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/docs/assets/images/screenshots/mirscore-menubar.png -------------------------------------------------------------------------------- /docs/assets/images/screenshots/mirscore-playback.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/docs/assets/images/screenshots/mirscore-playback.png -------------------------------------------------------------------------------- /docs/assets/images/screenshots/mirscore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/docs/assets/images/screenshots/mirscore.png -------------------------------------------------------------------------------- /docs/assets/images/screenshots/mirtext-hp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/docs/assets/images/screenshots/mirtext-hp.png -------------------------------------------------------------------------------- /docs/assets/images/screenshots/mirtext-menubar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/docs/assets/images/screenshots/mirtext-menubar.png -------------------------------------------------------------------------------- /docs/assets/images/screenshots/mirtext.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/docs/assets/images/screenshots/mirtext.png -------------------------------------------------------------------------------- /docs/assets/images/screenshots/mirtext2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/docs/assets/images/screenshots/mirtext2.png -------------------------------------------------------------------------------- /docs/assets/images/screenshots/mirtext3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/docs/assets/images/screenshots/mirtext3.png -------------------------------------------------------------------------------- /docs/assets/images/screenshots/mysymbol.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/docs/assets/images/screenshots/mysymbol.png -------------------------------------------------------------------------------- /docs/assets/images/screenshots/new-project-dialog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/docs/assets/images/screenshots/new-project-dialog.png -------------------------------------------------------------------------------- /docs/assets/images/screenshots/octave-marks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/docs/assets/images/screenshots/octave-marks.png -------------------------------------------------------------------------------- /docs/assets/images/screenshots/phrase.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/docs/assets/images/screenshots/phrase.png -------------------------------------------------------------------------------- /docs/assets/images/screenshots/project-tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/docs/assets/images/screenshots/project-tree.png -------------------------------------------------------------------------------- /docs/assets/images/screenshots/properties-dialog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/docs/assets/images/screenshots/properties-dialog.png -------------------------------------------------------------------------------- /docs/assets/images/screenshots/repeat-phrase.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/docs/assets/images/screenshots/repeat-phrase.png -------------------------------------------------------------------------------- /docs/assets/images/screenshots/rests.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/docs/assets/images/screenshots/rests.png -------------------------------------------------------------------------------- /docs/assets/images/screenshots/scale.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/docs/assets/images/screenshots/scale.png -------------------------------------------------------------------------------- /docs/assets/images/screenshots/simple-chord.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/docs/assets/images/screenshots/simple-chord.png -------------------------------------------------------------------------------- /docs/assets/images/screenshots/synth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/docs/assets/images/screenshots/synth.png -------------------------------------------------------------------------------- /docs/assets/images/screenshots/tempo-tab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/docs/assets/images/screenshots/tempo-tab.png -------------------------------------------------------------------------------- /docs/assets/images/screenshots/tied-notes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/docs/assets/images/screenshots/tied-notes.png -------------------------------------------------------------------------------- /docs/assets/images/screenshots/transpose-phrase.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/docs/assets/images/screenshots/transpose-phrase.png -------------------------------------------------------------------------------- /docs/assets/images/screenshots/triplet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/docs/assets/images/screenshots/triplet.png -------------------------------------------------------------------------------- /docs/assets/images/screenshots/universal-key.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/docs/assets/images/screenshots/universal-key.png -------------------------------------------------------------------------------- /docs/assets/images/screenshots/unpitched-rhythm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/docs/assets/images/screenshots/unpitched-rhythm.png -------------------------------------------------------------------------------- /docs/assets/images/screenshots/zip-phrase-pattern.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/docs/assets/images/screenshots/zip-phrase-pattern.png -------------------------------------------------------------------------------- /docs/assets/images/sitelogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/docs/assets/images/sitelogo.png -------------------------------------------------------------------------------- /docs/assets/js/mircomp.js: -------------------------------------------------------------------------------- 1 | 2 | function showSHA512() { 3 | document.getElementById('divSHA512').style.display = 'block' 4 | } -------------------------------------------------------------------------------- /draft/workflows/build.yml: -------------------------------------------------------------------------------- 1 | # name: Build MirIDE 2 | # on: workflow_dispatch 3 | 4 | # jobs: 5 | # build-app: 6 | # strategy: 7 | # matrix: 8 | # # os: [ macos-latest, ubuntu-latest, windows-latest ] 9 | # os: [ ubuntu-latest, windows-latest ] 10 | # name: Build and create a self-contained application 11 | # runs-on: ${{ matrix.os }} 12 | # steps: 13 | # - name: checkout 14 | # uses: actions/checkout@v2 15 | # - name: Setup Java 16 | # uses: actions/setup-java@v3 17 | # with: 18 | # java-version: '21' 19 | # distribution: 'temurin' 20 | # - run: ./gradlew :miride:createApp 21 | # - run: mv miride/build/app . 22 | # - name: upload application as artifact 23 | # uses: actions/upload-artifact@v2 24 | # with: 25 | # name: MirIDE-${{matrix.os}} 26 | # path: app -------------------------------------------------------------------------------- /examples/Example1/config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | lib 4 | 5 | 6 | -------------------------------------------------------------------------------- /examples/Example1/mirchords/Arioso.mirchord: -------------------------------------------------------------------------------- 1 | ; Arioso - Johann Sebastian Bach 2 | 3 | =1 ~1 ; Part 1 Voice 1 4 | (durationMode "sticky") (octaveMode "relative") 5 | 6 | (key "G" "maj") 7 | (instr "acoustic grand piano") 8 | 9 | (def :intro1 { ^5 b2- -b8 c d e | a,2- -a8 b c d | g,4 g'8 e c2- | -c8 a' f d c4 b8 c | b4 a8 g _2 | }) 10 | 11 | (def :A1 { _4 b g' _ | _ a e' _ | _ a, f' _ | _ g, d' _ | _ a e' _ | _1 | _8 e, g b _2 | _1 | } ) 12 | 13 | (def :B1 { ^5 b2- -b8 c d e | a,2- -a8 b c d | g,4 g'8 e c2- | -c8 a' f d c4 b8 c | b d b g f§4 e8 f§ | e f f g g2- | -g8 f g e f4. g8 | g1- | -g1 }) 14 | 15 | :intro1 :A1 :intro1 :B1 16 | 17 | =2 ~1 (durationMode "sticky") (octaveMode "relative") 18 | 19 | (key "G" "maj") 20 | (instr "acoustic grand piano") 21 | 22 | (def :intro2 { b2- -b8 c d e | a,2- -a8 b c d | g,4 g'8 e c2- | -c8 a' f d c4 b8 c | b4 a8 g _2 |} ) 23 | 24 | (def :A2 { g'2- -g8 e f g | a,2- -a8 c# e g | f2- -f8 d b a | g2- -g8 b d f | e2- -e8 c# a g | f a c# d d2- -d4 b c4. d8 | d1 } ) 25 | 26 | (def :B2 { b8 d b d b _ b4 | a8 d a d a _ a4 | g g'8 e c2- | -c8 a' f d c4 b8 c | b2 g2 | c2 b&2 | b§4 g a d | b d8 e d e c4 | [b d]1 }) 27 | 28 | :intro2 :A2 :intro2 :B2 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /examples/Example1/mirchords/FraMartino.mirchord: -------------------------------------------------------------------------------- 1 | ; Fra Martino campanaro 2 | 3 | =1 ~1 4 | (instr "flute") 5 | (key "D" "min") 6 | (durationMode "sticky") (octaveMode "relative") 7 | 8 | (def :fra { ^4 f4 g a f }) ; Fra Martino campanaro 9 | 10 | (def :dormi { ^4 a4 b c2 }) ; dormi tu? 11 | 12 | (def :campane { ^5 c8 d c b a4 f }) ; suona le campane 13 | 14 | (def :din { ^4 f4 c f2 }) ; din don dan 15 | 16 | (* 2 :fra) (* 2 :dormi) (* 2 :campane) (* 2 :din) 17 | -------------------------------------------------------------------------------- /examples/Example1/mirchords/Inno_alla_gioia.mirchord: -------------------------------------------------------------------------------- 1 | ; Inno alla gioia - Ludwig van Beethoven 2 | ; brano n.8 nel quadernone di "Educazione Musicale" delle medie (il n.1 è la piccola melodia "Suono Subito") 3 | ; copiata dalla lavagna, la trascrizione originale del professore usava una particolare notazione testuale: 4 | ; 'd' per DO, 'r' per RE, 'm' per MI, ecc.. (suonata con il flauto non serviva una notazione per le ottave) 5 | ; la lunghezza delle linee orizzontali sui quadretti funzionale per definire la durata delle note 6 | ; - sezione H, succursale in zona mare della scuola media L.C. 7 | 8 | 9 | =1 ~1 ; Part 1 Voice 1 10 | (time 4 4) 11 | (instr "flute") 12 | (durationMode "sticky") (octaveMode "relative") 13 | 14 | (* 2 {e e f g | g f e d | c c d e | e4. d8 d2 | 15 | e4 e f g | g f d2 | c4 c d e | d4. c8 c2 | 16 | d4 d e c | d e8 f e4 c | d e8 f e4 d | c d g2 | 17 | e4 e f g | g f e d | c c d e | d4. c8 c2 }) 18 | 19 | { d4 d e c | d e8 f e4 c | d e8 f e4 d | c d g2 | 20 | e4 e f g | g f e d | c c d e | d4. c8 c2 } 21 | -------------------------------------------------------------------------------- /examples/Example1/mirchords/Invention1_JSBach.mirchord: -------------------------------------------------------------------------------- 1 | ; Invention N. 1 - J.S. Bach 2 | 3 | (info 4 | (title "Invention N. 1") 5 | (composer "Johann Sebastian Bach") 6 | ) 7 | 8 | =1 ~1 (octaveMode "relative") (durationMode "sticky") 9 | (key "C" "maj") 10 | (clef "treble") 11 | (name "Voice 1") 12 | _16 c d e f d e c g'8 c b8 c | d16 g, a b c a b g d'8 g f g | 13 | 14 | =2 ~1 (octaveMode "relative") (durationMode "sticky") 15 | (clef "bass") 16 | (name "Voice 2") 17 | ^3 _2 _16 c d e f d e c | g'8 g, _4 _16 g a b c a b g | 18 | 19 | =1 20 | ^5 e16 a g f e g f a g f e d c e d f | e d c b a c b d c b a g f# a g b 21 | 22 | =2 23 | ^4 c8 b c d e g, a b | c e, f# g a b c4 -------------------------------------------------------------------------------- /examples/Example1/mirchords/Marche-CPEBach.mirchord: -------------------------------------------------------------------------------- 1 | (info 2 | (title "Marche") 3 | (composer "Carl Philipp Emanuel Bach") 4 | ) 5 | 6 | =1 ~1 (octaveMode "relative") (durationMode "sticky") 7 | (instr "acoustic grand piano") 8 | (key "E&" "maj") 9 | (clef "treble") 10 | ^4 _ _ _ e8 g | b4 c8 d e b g'4 | g8 f e d e4 [a, c] | [a c] [g b]2 [f a]4 | (tp 3/2 g8 f e) e2 a'4 | 11 | 12 | =2 ~1 (octaveMode "relative") (durationMode "sticky") 13 | (key -3 "maj") 14 | (clef "bass") 15 | ^3 _ _ _ e | g a8 f g4 e | b b' e, a | b2 b, | e4 g8 f g4 e | d b' b, b' 16 | 17 | =1 18 | (tp 3/2 f8 e d) d d d f e d -------------------------------------------------------------------------------- /examples/Example1/mirchords/Unpitched.mirchord: -------------------------------------------------------------------------------- 1 | =1 ~1 (durationMode "sticky") (octaveMode "relative") 2 | (clef "percussion") 3 | (unpitched "crashcymbala" "E" 5) 4 | x4 x x x x2 x2 x x8 x x x 5 | 6 | ~2 (durationMode "sticky") (octaveMode "relative") 7 | (unpitched "acousticbassdrum" "C" 4) 8 | x8 x4 x x8 x8 x4 x x8 x8 x4 x x8 x8 x4 x x8 9 | 10 | ~1 (* 3 {o16 o o o}) -------------------------------------------------------------------------------- /examples/Example1/mirgrams/melchordsym.mirgram: -------------------------------------------------------------------------------- 1 | ::= =1 ~1 (clef "treble") =2 ~1 (clef "bass") \n 2 | 3 | 4 | ::= empty 5 | 6 | ::= \s 7 | 8 | ::= | 9 | 10 | ::= empty 11 | 12 | ::= \s !40 13 | ::= \s !20 14 | ::= \s !10 15 | 16 | ::= 17 | ::= 18 | ::= 19 | 20 | ::= =2 \s `1/8 \s \s =1 \s <%/%> 21 | ::= =2 \s `1/4 \s \s =1 \s <%/%> 22 | ::= =2 \s `1/2 \s \s =1 \s <%/%> 23 | ::= =2 \s `1/1 \s \s =1 \s <%/%> 24 | 25 | ::= I | IImin | IV | IV | VImin | VIIdim 26 | 27 | ::= 1 | 2 | 3 28 | 29 | ::= empty 30 | ::= \s !10 31 | ::= \s !50 32 | ::= \s !30 33 | 34 | ::= ^3 \s 35 | <%+ 36 | ::= (ch \s \s ${sym} \s x8) 37 | ::= (ch \s \s ${sym} \s x4) 38 | ::= (ch \s \s ${sym} \s x2) 39 | %> 40 | -------------------------------------------------------------------------------- /examples/Example1/mirgrams/score.mirgram: -------------------------------------------------------------------------------- 1 | 2 | ::= =1 ~1 \n 3 | <%+ ::= ^4 !80 | ^3 !20 %> \s 4 | <%/%> \n 5 | ; CHORUS \n 6 | <%+ 7 | ::= ^4 !50 | ^5 !50 8 | ::= \s !5 | 9 | \s !10 10 | ::= 16 11 | %> 12 | \s 13 | <%/%> \n 14 | ; ENDING \n 15 | <%+ ::= ^4 !80 | ^3 !20 %> \s 16 | 17 | ::= 18 | 19 | ::= \n 20 | 21 | ::= 22 | 23 | ::= 24 | 25 | ::= \s 26 | 27 | ::= (def : \s { \s }) 28 | <%+ 29 | ::= :${id} \s !35 | 30 | ( \s :${id}) \s ) !10 31 | %> 32 | 33 | ::= <%= phrase %> 34 | 35 | ::= 1 !90 | 2 !10 36 | ::= transposeDiatonic \s \s "maj" 37 | 38 | ::= c | d | e | f | g | a | b 39 | 40 | ::= empty !98 | 41 | # !1 | 42 | & !1 43 | 44 | ::= 45 | 46 | ::= empty 47 | 48 | ::= \s !5 49 | 50 | ::= \s !10 51 | 52 | ::= \s !35 53 | 54 | ::= \s !50 55 | 56 | ::= 8 57 | ::= 4 58 | ::= 2 59 | ::= 1 60 | -------------------------------------------------------------------------------- /examples/Example1/src/JustIntonation.groovy: -------------------------------------------------------------------------------- 1 | // 1:1 9:8 5:4 4:3 3:2 5:3 15:8 2:1 2 | 3 | float[] ratios = [ 1, 4 | 9/8, 5 | 5/4, 6 | 4/3, 7 | 3/2, 8 | 5/3, 9 | 15/8, 10 | 2 11 | ] 12 | 13 | float f0 = 261.62558 14 | 15 | List frequencies = [] 16 | for (int i = 0; i < 8; i++) { 17 | frequencies[i] = f0 * ratios[i] 18 | } 19 | println frequencies 20 | MidiPlayer.playFrequencies(frequencies, [1000f]) -------------------------------------------------------------------------------- /examples/Example1/src/builder/AutoMeasureSepExample.groovy: -------------------------------------------------------------------------------- 1 | new ScoreBuilder().score() { 2 | part(name:"P1") { 3 | voice() { 4 | clef(type:ClefType.TREBLE) 5 | key(fifths:0, mode:KeyMode.MAJOR) 6 | time(time:fr(4,4)) 7 | tempo(baseBeat:fr(1,4), bpm:90) 8 | chord(midiPitch:60, duration:f4) 9 | chord(midiPitch:62, duration:f4) 10 | chord(midiPitch:64, duration:f4dot) 11 | chord(midiPitch:60, duration:f4) 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /examples/Example1/src/builder/InstrumentChangeExample.groovy: -------------------------------------------------------------------------------- 1 | // first measures of Frère Jacques (the Italian version is known as "Fra Martino") 2 | def f4 = fr(1,4) 3 | def f2 = fr(1,2) 4 | def f1 = fr(1,1) 5 | def fra_martino = new ScoreBuilder().score() { 6 | part(name:"P1") { 7 | voice() { 8 | clef(type:ClefType.TREBLE) 9 | key(fifths:0, mode:KeyMode.MAJOR) 10 | time(time:fr(4,4)) 11 | tempo(baseBeat:fr(1,4), bpm:90) 12 | (1..2).each { 13 | chord(midiPitch:60, duration:f4) 14 | chord(midiPitch:62, duration:f4) 15 | chord(midiPitch:64, duration:f4) 16 | chord(midiPitch:60, duration:f4) 17 | } 18 | instrument(id:"Violin 1", program:41) 19 | (1..2).each { 20 | chord(midiPitch:64, duration:f4) 21 | chord(midiPitch:65, duration:f4) 22 | chord(midiPitch:67, duration:f2) 23 | } 24 | } 25 | } 26 | } -------------------------------------------------------------------------------- /examples/Example1/src/builder/TripletsExample.groovy: -------------------------------------------------------------------------------- 1 | new ScoreBuilder().score() { 2 | part(name: "P1") { 3 | voice() { 4 | clef(type:ClefType.TREBLE) 5 | key(fifths:0, mode:KeyMode.MAJOR) 6 | time(time:fr(4,4)) 7 | tempo(baseBeat:fr(1,4), bpm:90) 8 | chord(midiPitch:60, duration:f2) 9 | tuplet(ratio:fr(3,2)) { 10 | chord(midiPitch:62, duration:f4) 11 | chord(midiPitch:64, duration:f4) 12 | chord(midiPitch:60, duration:f4) 13 | } 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /examples/Example1/src/fo.groovy: -------------------------------------------------------------------------------- 1 | File f = new File( projectPath.resolve("musicxml/chroma").toString() ) 2 | def reader = new MusicXmlLeadSheetReader() 3 | def score_subscr = new MirchordScoreBuilder() 4 | reader.addLeadSheetListener(score_subscr) 5 | reader.read(f) 6 | 7 | List notes = [] 8 | for(Score score: score_subscr.scores) { 9 | notes.addAll( score.parts[0].voices[0].getChords() ) 10 | } 11 | 12 | Comparator comparator = [ 13 | compare:{ Chord a, Chord b -> a.pitches[0].getMidiValue() <=> b.pitches[0].getMidiValue() } 14 | ] as Comparator 15 | 16 | 17 | var fo = new FactorOracle(notes, comparator) 18 | var nav = new OracleNavigator(fo) 19 | var seq = nav.navigate(0, 330) 20 | 21 | var score = new Score() 22 | var part = new Part("Melody") 23 | score.parts.add(part) 24 | var voice = new Voice() 25 | part.voices.add(voice) 26 | part.voices[0].elements = [] 27 | 28 | for (int i = 0; i < seq.size(); i++) { 29 | voice.elements << seq[i] 30 | } 31 | 32 | def midiFile = projectPath.resolve('midi/fo.mid').toFile() 33 | saveAs(score, midiFile) 34 | 35 | score 36 | -------------------------------------------------------------------------------- /examples/Example1/src/ge/buildDataset.groovy: -------------------------------------------------------------------------------- 1 | File f = new File( projectPath.resolve("musicxml/chroma").toString() ) 2 | def reader = new MusicXmlLeadSheetReader() 3 | def chroma_subscr = new ChromaFeatures() 4 | reader.addLeadSheetListener(chroma_subscr) 5 | reader.read(f) 6 | var chroma_compr = new Compressor(chroma_subscr.features) 7 | saveObjectToBinaryFile(chroma_compr, projectPath.resolve("data/chroma.ser").toString() ) 8 | 9 | 10 | f = new File( projectPath.resolve("musicxml/dur").toString() ) 11 | reader = new MusicXmlLeadSheetReader() 12 | def durations_subscr = new Durations() 13 | reader.addLeadSheetListener(durations_subscr) 14 | reader.read(f) 15 | var durations_compr = new Compressor(durations_subscr.durations) 16 | saveObjectToBinaryFile(durations_compr, projectPath.resolve("data/durations.ser").toString() ) 17 | -------------------------------------------------------------------------------- /examples/Example1/src/ge/chordProgMelody.groovy: -------------------------------------------------------------------------------- 1 | def grammarText = getClass().getResourceAsStream("mirgrams/melchordsym.mirgram").getText() 2 | def gr = new MirGram(grammarText, "score", 3) 3 | List cods = [] 4 | def rand = new Random(123456789L) 5 | (1..1000).each { 6 | cods << rand.nextInt(256) 7 | } 8 | def result = gr.translate(cods) -------------------------------------------------------------------------------- /examples/Example1/src/ip.groovy: -------------------------------------------------------------------------------- 1 | File f = new File( projectPath.resolve("musicxml/chroma").toString() ) 2 | def reader = new MusicXmlLeadSheetReader() 3 | def score_subscr = new MirchordScoreBuilder() 4 | reader.addLeadSheetListener(score_subscr) 5 | reader.read(f) 6 | 7 | List notes = [] 8 | for(Score score: score_subscr.scores) { 9 | notes.addAll( score.parts[0].voices[0].getChords() ) 10 | } 11 | 12 | Comparator comparator = [ 13 | compare:{ Chord a, Chord b -> a.pitches[0].getMidiValue() <=> b.pitches[0].getMidiValue() } 14 | ] as Comparator 15 | var ip = new IncrementalParser(notes, comparator) 16 | 17 | 18 | var seq = ip.generate(new Chord(new Pitch('E'), fr(1,8)), 330, 16) 19 | 20 | 21 | var score = new Score() 22 | var part = new Part("Melody") 23 | score.parts.add(part) 24 | var voice = new Voice() 25 | part.voices.add(voice) 26 | part.voices[0].elements = [] 27 | 28 | for (int i = 0; i < seq.size(); i++) { 29 | voice.elements << seq[i] 30 | } 31 | 32 | def midiFile = projectPath.resolve('midi/ip.mid').toFile() 33 | saveAs(score, midiFile) 34 | 35 | score 36 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /libs/lingwah.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/libs/lingwah.jar -------------------------------------------------------------------------------- /libs/zong-all.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/libs/zong-all.jar -------------------------------------------------------------------------------- /licenses/AceEditor-LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2010, Ajax.org B.V. 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | * Redistributions of source code must retain the above copyright 7 | notice, this list of conditions and the following disclaimer. 8 | * Redistributions in binary form must reproduce the above copyright 9 | notice, this list of conditions and the following disclaimer in the 10 | documentation and/or other materials provided with the distribution. 11 | * Neither the name of Ajax.org B.V. nor the 12 | names of its contributors may be used to endorse or promote products 13 | derived from this software without specific prior written permission. 14 | 15 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 16 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 | DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY 19 | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 | -------------------------------------------------------------------------------- /licenses/AtlantaFX-LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) [2022] [mkpaz] 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /licenses/CrystalProject-LICENSE: -------------------------------------------------------------------------------- 1 | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 | This copyright and license notice covers the crystal project images. 3 | ************************************************************************ 4 | 5 | TITLE: Crystal Project Icons 6 | AUTHOR: Everaldo Coelho 7 | SITE: http://www.everaldo.com 8 | CONTACT: everaldo@everaldo.com 9 | 10 | Copyright (c) 2006-2007 Everaldo Coelho. 11 | 12 | LICENSE: GNU Lesser General Public License (LGPL) - see 13 | -------------------------------------------------------------------------------- /licenses/RichTextFx-LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2013-2017, Tomas Mikula and contributors 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 5 | 6 | 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 7 | 8 | 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 9 | 10 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 11 | -------------------------------------------------------------------------------- /mirchord/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'groovy' 2 | apply plugin: 'application' 3 | 4 | 5 | sourceSets { 6 | main { 7 | groovy { 8 | srcDirs = ['src/main/groovy'] 9 | } 10 | resources { 11 | srcDir 'resources' 12 | } 13 | } 14 | } 15 | 16 | jar { 17 | manifest.attributes 'Created-By': 'Mirco Colletta' 18 | } 19 | 20 | task runScript(type: JavaExec) { 21 | description 'Run Simple Demo' 22 | mainClass = 'io.github.mcolletta.mirchord.interpreter.MirChordInterpreter' 23 | classpath = sourceSets.main.runtimeClasspath 24 | 25 | if (project.hasProperty('custom_arg')) { 26 | args project.getProperty('custom_arg') 27 | } 28 | } 29 | 30 | defaultTasks 'runScript' -------------------------------------------------------------------------------- /mircomposer/.gitignore: -------------------------------------------------------------------------------- 1 | *.class 2 | Thumbs.db 3 | 4 | # Package Files # 5 | # *.jar 6 | *.war 7 | *.ear 8 | 9 | # Directories # 10 | .metadata 11 | .metadata* 12 | .recommenders 13 | .gradle 14 | bin 15 | build 16 | /doc 17 | 18 | 19 | # Eclipse settings (should be generated with Gradle import in Eclipse) 20 | .project 21 | .classpath 22 | .settings 23 | 24 | # IntelliJ IDEA settings (should be generated with Gradle import in Eclipse) 25 | .idea 26 | *.iml -------------------------------------------------------------------------------- /mircomposer/src/main/groovy/io/github/mcolletta/mircomposer/Utils.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2016-2022 Mirco Colletta 3 | * 4 | * This file is part of MirComp. 5 | * 6 | * MirComp 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 | * MirComp 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 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with MirComp. If not, see . 18 | */ 19 | 20 | /** 21 | * @author Mirco Colletta 22 | */ 23 | 24 | package io.github.mcolletta.mircomposer 25 | 26 | import java.io.File 27 | import java.io.IOException 28 | import java.nio.file.Path 29 | 30 | 31 | protected class Utils { 32 | 33 | protected static final File makeDir(File parentFolder, String name) { 34 | File folder 35 | if (parentFolder.isDirectory()) { 36 | folder = new File(parentFolder,name) 37 | boolean res = false 38 | try { 39 | res = folder.mkdir() 40 | } catch (IOException ex) { 41 | println ex.getMessage() 42 | ex.printStackTrace() 43 | } 44 | } 45 | return folder 46 | } 47 | 48 | protected static String getFileExt(Path path) { 49 | String ext = "" 50 | String fileName = path.getFileName() 51 | int i = fileName.toString().lastIndexOf('.') 52 | if (i > 0) { 53 | ext = fileName.substring(i+1); 54 | } 55 | return ext 56 | } 57 | 58 | } -------------------------------------------------------------------------------- /mircomposer/src/main/groovy/io/github/mcolletta/mircomposer/resources/icons/checkedclipboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mircomposer/src/main/groovy/io/github/mcolletta/mircomposer/resources/icons/checkedclipboard.png -------------------------------------------------------------------------------- /mircomposer/src/main/groovy/io/github/mcolletta/mircomposer/resources/icons/edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mircomposer/src/main/groovy/io/github/mcolletta/mircomposer/resources/icons/edit.png -------------------------------------------------------------------------------- /mircomposer/src/main/groovy/io/github/mcolletta/mircomposer/resources/icons/fileopen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mircomposer/src/main/groovy/io/github/mcolletta/mircomposer/resources/icons/fileopen.png -------------------------------------------------------------------------------- /mircomposer/src/main/groovy/io/github/mcolletta/mircomposer/resources/icons/folder_new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mircomposer/src/main/groovy/io/github/mcolletta/mircomposer/resources/icons/folder_new.png -------------------------------------------------------------------------------- /mircomposer/src/main/groovy/io/github/mcolletta/mircomposer/resources/icons/locked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mircomposer/src/main/groovy/io/github/mcolletta/mircomposer/resources/icons/locked.png -------------------------------------------------------------------------------- /mircomposer/src/main/groovy/io/github/mcolletta/mircomposer/resources/icons/mix_audio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mircomposer/src/main/groovy/io/github/mcolletta/mircomposer/resources/icons/mix_audio.png -------------------------------------------------------------------------------- /mircomposer/src/main/groovy/io/github/mcolletta/mircomposer/resources/icons/project_open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mircomposer/src/main/groovy/io/github/mcolletta/mircomposer/resources/icons/project_open.png -------------------------------------------------------------------------------- /mircomposer/src/main/groovy/io/github/mcolletta/mircomposer/resources/icons/reload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mircomposer/src/main/groovy/io/github/mcolletta/mircomposer/resources/icons/reload.png -------------------------------------------------------------------------------- /mircomposer/src/main/groovy/io/github/mcolletta/mircomposer/resources/icons/runprog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mircomposer/src/main/groovy/io/github/mcolletta/mircomposer/resources/icons/runprog.png -------------------------------------------------------------------------------- /mircomposer/src/main/groovy/io/github/mcolletta/mircomposer/resources/icons/sc_controlproperties.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mircomposer/src/main/groovy/io/github/mcolletta/mircomposer/resources/icons/sc_controlproperties.png -------------------------------------------------------------------------------- /mircomposer/src/main/groovy/io/github/mcolletta/mircomposer/resources/icons/stop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mircomposer/src/main/groovy/io/github/mcolletta/mircomposer/resources/icons/stop.png -------------------------------------------------------------------------------- /mircomposer/src/main/groovy/io/github/mcolletta/mircomposer/resources/icons/view_sidetree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mircomposer/src/main/groovy/io/github/mcolletta/mircomposer/resources/icons/view_sidetree.png -------------------------------------------------------------------------------- /mircomposer/src/main/groovy/io/github/mcolletta/mircomposer/resources/icons/view_tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mircomposer/src/main/groovy/io/github/mcolletta/mircomposer/resources/icons/view_tree.png -------------------------------------------------------------------------------- /mircomposer/src/main/groovy/io/github/mcolletta/mircomposer/resources/icons/window_new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mircomposer/src/main/groovy/io/github/mcolletta/mircomposer/resources/icons/window_new.png -------------------------------------------------------------------------------- /mircomposer/src/main/groovy/io/github/mcolletta/mircomposer/resources/icons/xconsole.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mircomposer/src/main/groovy/io/github/mcolletta/mircomposer/resources/icons/xconsole.png -------------------------------------------------------------------------------- /mircomposer/src/main/groovy/io/github/mcolletta/mircomposer/resources/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mircomposer/src/main/groovy/io/github/mcolletta/mircomposer/resources/images/logo.png -------------------------------------------------------------------------------- /mircomposer/src/main/groovy/io/github/mcolletta/mircomposer/resources/info.txt: -------------------------------------------------------------------------------- 1 | MirComp Composer 2 | Version: 1.0.0-alpha.4 3 | 4 | Copyright (C) 2016-2022 Mirco Colletta 5 | 6 | This program is distributed under the GNU General Public License version 3. 7 | 8 | This program comes with ABSOLUTELY NO WARRANTY. 9 | 10 | This program is free software: you can redistribute it and/or modify 11 | it under the terms of the GNU General Public License as published by 12 | the Free Software Foundation, either version 3 of the License, or 13 | (at your option) any later version. 14 | 15 | This program is distributed in the hope that it will be useful, 16 | but WITHOUT ANY WARRANTY; without even the implied warranty of 17 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 | GNU General Public License for more details. 19 | 20 | You should have received a copy of the GNU General Public License 21 | along with MirComp. If not, see . -------------------------------------------------------------------------------- /mirconverter/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'groovy' 2 | 3 | 4 | dependencies { 5 | implementation project(':mirchord') 6 | } 7 | 8 | jar { 9 | manifest.attributes 'Created-By': 'Mirco Colletta' 10 | } 11 | 12 | sourceSets { 13 | main { 14 | groovy { 15 | srcDirs = ['src/main/groovy'] 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /mircoracle/README.md: -------------------------------------------------------------------------------- 1 | # mircoracle 2 | 3 | 4 | **MircOracle** is a Machine Learning library implemented with the [Groovy programming language](http://www.groovy-lang.org/) 5 | 6 | The library has several parts: a tree-based dictionary predictor (ContinuationDictionary), a Factor Oracle class and components to navigate and generate sequences. The implementation is based on the algorithms described in several papers, see the References section for details. 7 | 8 | 9 | MircOracle is part of MirComp and is released under the GPL3 License, see the LICENSE file for details. 10 | 11 | Copyright (c) 2016-2024 Mirco Colletta 12 | 13 | 14 | ## References 15 | 16 | _Guessing the Composer's Mind: Applying Universal Prediction to Musical Style_ 17 | Gérard Assayag, Shlomo Dubnov, Olivier Delerue 18 | 19 | _Using Factor Oracles for Machine Improvisaton_ 20 | Gérard Assayag, Shlomo Dubnov 21 | 22 | _Navigating the Oracle: a heuristic approach_ 23 | Gérard Assayag, Georges Bloch 24 | 25 | _Visualising OMax_ 26 | Benjamin Lévy 27 | 28 | _Different applications of the factor oracle: an overview_ 29 | Thierry Lecroq, Arnaud Lefebvre 30 | 31 | _Compror: compression with a factor oracle_ 32 | Arnaud Lefebvre, Thierry Lecroq 33 | 34 | _Compror: On-line lossless data compression with a factor oracle_ 35 | Arnaud Lefebvre, Thierry Lecroq 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /mircoracle/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'groovy' 2 | apply plugin: 'application' 3 | 4 | sourceSets { 5 | main { 6 | groovy { 7 | srcDirs = ['src/main/groovy'] 8 | } 9 | resources { 10 | srcDirs = ["src/main/groovy"] 11 | } 12 | } 13 | test { 14 | groovy { 15 | srcDirs = ['src/test/groovy'] 16 | } 17 | resources { 18 | srcDirs = ['src/test/groovy'] 19 | } 20 | } 21 | } 22 | 23 | jar { 24 | manifest.attributes 'Created-By': 'Mirco Colletta' 25 | } 26 | 27 | 28 | task runScript(type: JavaExec) { 29 | description 'Run Simple Demo' 30 | mainClass = 'io.github.mcolletta.mircoracle.Demo' 31 | classpath = sourceSets.main.runtimeClasspath 32 | 33 | if (project.hasProperty('custom_arg')) { 34 | args project.getProperty('custom_arg') 35 | } 36 | } 37 | 38 | defaultTasks 'runScript' -------------------------------------------------------------------------------- /mirdaw/config/src/main/groovy/compiler-config.groovy: -------------------------------------------------------------------------------- 1 | import groovy.transform.CompileStatic 2 | 3 | withConfig(configuration) { 4 | ast(CompileStatic) 5 | } 6 | -------------------------------------------------------------------------------- /mirdaw/settings.gradle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirdaw/settings.gradle -------------------------------------------------------------------------------- /mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/MirDAW.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2016-2025 Mirco Colletta 3 | * 4 | * This file is part of MirComp. 5 | * 6 | * MirComp 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 | * MirComp 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 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with MirComp. If not, see . 18 | */ 19 | 20 | /** 21 | * @author Mirco Colletta 22 | */ 23 | 24 | package io.github.mcolletta.mirdaw 25 | 26 | 27 | import java.io.IOException 28 | import javafx.application.Platform 29 | import javafx.application.Application 30 | import javafx.scene.Scene 31 | import javafx.scene.layout.StackPane 32 | import javafx.stage.Stage 33 | 34 | 35 | public class MirDAW extends Application { 36 | 37 | @Override 38 | public void start(Stage stage) throws Exception { 39 | StackPane root = new StackPane() 40 | 41 | MidiEditor editor = new MidiEditor() 42 | 43 | root.getChildren().add(editor) 44 | 45 | Scene scene = new Scene(root, 1000, 700) 46 | setNordDark(scene) 47 | 48 | stage.setScene(scene) 49 | stage.show() 50 | } 51 | 52 | private String nordDarkUrl = getClass().getResource("resources/themes/nord-dark.css").toExternalForm(); 53 | 54 | void setNordDark(Scene scene) { 55 | scene.getStylesheets().add(nordDarkUrl) 56 | } 57 | 58 | public static void main(String[] args) throws IOException { 59 | Application.launch(MirDAW, args) 60 | Platform.exit() 61 | println "stopped" 62 | System.exit(0) 63 | } 64 | 65 | } 66 | -------------------------------------------------------------------------------- /mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/color_line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/color_line.png -------------------------------------------------------------------------------- /mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/colorman.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/colorman.png -------------------------------------------------------------------------------- /mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/enumlist1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/enumlist1.png -------------------------------------------------------------------------------- /mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/eraser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/eraser.png -------------------------------------------------------------------------------- /mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/fileopen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/fileopen.png -------------------------------------------------------------------------------- /mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/insert_table_row.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/insert_table_row.png -------------------------------------------------------------------------------- /mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/kcmmidi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/kcmmidi.png -------------------------------------------------------------------------------- /mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/kmixdocked_mute.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/kmixdocked_mute.png -------------------------------------------------------------------------------- /mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/mini_autoform.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/mini_autoform.png -------------------------------------------------------------------------------- /mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/mix_midi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/mix_midi.png -------------------------------------------------------------------------------- /mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/move.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/move.png -------------------------------------------------------------------------------- /mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/new_window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/new_window.png -------------------------------------------------------------------------------- /mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/player_eject.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/player_eject.png -------------------------------------------------------------------------------- /mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/player_end.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/player_end.png -------------------------------------------------------------------------------- /mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/player_fwd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/player_fwd.png -------------------------------------------------------------------------------- /mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/player_pause.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/player_pause.png -------------------------------------------------------------------------------- /mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/player_play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/player_play.png -------------------------------------------------------------------------------- /mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/player_rew.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/player_rew.png -------------------------------------------------------------------------------- /mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/player_start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/player_start.png -------------------------------------------------------------------------------- /mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/player_stop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/player_stop.png -------------------------------------------------------------------------------- /mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/player_time.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/player_time.png -------------------------------------------------------------------------------- /mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/redo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/redo.png -------------------------------------------------------------------------------- /mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/reload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/reload.png -------------------------------------------------------------------------------- /mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/sc_aligncenter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/sc_aligncenter.png -------------------------------------------------------------------------------- /mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/sc_arrowshapes.striped-right-arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/sc_arrowshapes.striped-right-arrow.png -------------------------------------------------------------------------------- /mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/sc_autoformat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/sc_autoformat.png -------------------------------------------------------------------------------- /mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/sc_beziersmooth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/sc_beziersmooth.png -------------------------------------------------------------------------------- /mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/sc_beziersmooth2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/sc_beziersmooth2.png -------------------------------------------------------------------------------- /mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/sc_connectorline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/sc_connectorline.png -------------------------------------------------------------------------------- /mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/sc_firstrecord.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/sc_firstrecord.png -------------------------------------------------------------------------------- /mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/sc_freeline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/sc_freeline.png -------------------------------------------------------------------------------- /mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/sc_lastrecord.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/sc_lastrecord.png -------------------------------------------------------------------------------- /mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/sc_nextrecord.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/sc_nextrecord.png -------------------------------------------------------------------------------- /mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/sc_prevrecord.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/sc_prevrecord.png -------------------------------------------------------------------------------- /mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/sc_save.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/sc_save.png -------------------------------------------------------------------------------- /mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/sc_saveas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/sc_saveas.png -------------------------------------------------------------------------------- /mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/sc_selectobject.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/sc_selectobject.png -------------------------------------------------------------------------------- /mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/sc_selecttable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/sc_selecttable.png -------------------------------------------------------------------------------- /mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/sc_spinbutton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/sc_spinbutton.png -------------------------------------------------------------------------------- /mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/sc_toggleaxisdescr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/sc_toggleaxisdescr.png -------------------------------------------------------------------------------- /mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/sc_zoom100percent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/sc_zoom100percent.png -------------------------------------------------------------------------------- /mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/sc_zoomin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/sc_zoomin.png -------------------------------------------------------------------------------- /mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/sc_zoomout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/sc_zoomout.png -------------------------------------------------------------------------------- /mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/undo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirdaw/src/main/groovy/io/github/mcolletta/mirdaw/resources/icons/undo.png -------------------------------------------------------------------------------- /mirdaw/src/main/java/Main.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2016-2025 Mirco Colletta 3 | * 4 | * This file is part of MirComp. 5 | * 6 | * MirComp 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 | * MirComp 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 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with MirComp. If not, see . 18 | */ 19 | 20 | /** 21 | * @author Mirco Colletta 22 | */ 23 | 24 | package io.github.mcolletta.mirdaw; 25 | 26 | public class Main { 27 | 28 | public static void main(String[] args) { 29 | // empty 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /mirdaw/src/main/java/module-info.java: -------------------------------------------------------------------------------- 1 | module io.github.mcolletta.mirdaw { 2 | requires java.desktop; 3 | requires java.logging; 4 | requires javafx.graphics; 5 | requires javafx.controls; 6 | requires javafx.media; 7 | requires javafx.swing; 8 | requires javafx.fxml; 9 | 10 | requires org.apache.groovy; 11 | 12 | // requires org.graalvm.polyglot; 13 | // requires org.graalvm.python.embedding; 14 | 15 | opens io.github.mcolletta.mirdaw to javafx.fxml, org.apache.groovy; 16 | 17 | exports io.github.mcolletta.mirdaw; 18 | } 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /mirfoldertreeview/.gitignore: -------------------------------------------------------------------------------- 1 | *.class 2 | Thumbs.db 3 | 4 | # Package Files # 5 | # *.jar 6 | *.war 7 | *.ear 8 | 9 | # Directories # 10 | .metadata 11 | .metadata* 12 | .recommenders 13 | .gradle 14 | bin 15 | build 16 | /doc 17 | 18 | 19 | # Eclipse settings (should be generated with Gradle import in Eclipse) 20 | .project 21 | .classpath 22 | .settings 23 | 24 | # IntelliJ IDEA settings (should be generated with Gradle import in Eclipse) 25 | .idea 26 | *.iml -------------------------------------------------------------------------------- /mirfoldertreeview/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'groovy' 2 | apply plugin: 'application' 3 | 4 | 5 | sourceSets { 6 | main { 7 | groovy { 8 | srcDirs = ['src/main/groovy'] 9 | } 10 | resources { 11 | srcDirs = ["src/main/groovy"] 12 | } 13 | } 14 | } 15 | 16 | jar { 17 | manifest.attributes 'Created-By': 'Mirco Colletta' 18 | } 19 | 20 | task runScript(type: JavaExec) { 21 | description 'Run Simple Demo' 22 | mainClass = 'io.github.mcolletta.mirfoldertreeview.Demo' 23 | classpath = sourceSets.main.runtimeClasspath 24 | 25 | if (project.hasProperty('custom_arg')) { 26 | args project.getProperty('custom_arg') 27 | } 28 | } 29 | 30 | defaultTasks 'runScript' -------------------------------------------------------------------------------- /mirfoldertreeview/src/main/groovy/io/github/mcolletta/mirfoldertreeview/Demo.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2016-2017 Mirco Colletta 3 | * 4 | * This file is part of MirComp. 5 | * 6 | * MirComp 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 | * MirComp 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 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with MirComp. If not, see . 18 | */ 19 | 20 | /** 21 | * @author Mirco Colletta 22 | */ 23 | 24 | package io.github.mcolletta.mirfoldertreeview 25 | 26 | import javafx.stage.WindowEvent 27 | import javafx.event.EventHandler 28 | import javafx.application.Platform 29 | 30 | import java.io.IOException 31 | import javafx.application.Application 32 | import javafx.scene.Scene 33 | import javafx.scene.layout.StackPane 34 | import javafx.stage.Stage 35 | 36 | 37 | public class Demo extends Application { 38 | 39 | @Override 40 | public void start(Stage stage) throws Exception { 41 | StackPane root = new StackPane() 42 | 43 | FolderTreeView viewer = new FolderTreeView("/path/to/project") 44 | 45 | root.getChildren().add(viewer) 46 | 47 | Scene scene = new Scene(root, 1000, 700) 48 | 49 | stage.setScene(scene) 50 | stage.show() 51 | 52 | stage.setOnCloseRequest(new EventHandler() { 53 | @Override 54 | public void handle(WindowEvent event) { 55 | viewer.stopWatching() 56 | stop() 57 | Platform.exit() 58 | } 59 | }) 60 | } 61 | 62 | public static void main(String[] args) throws IOException { 63 | Application.launch(Demo, args); 64 | } 65 | 66 | } 67 | -------------------------------------------------------------------------------- /mirfoldertreeview/src/main/groovy/io/github/mcolletta/mirfoldertreeview/FolderTreeView.fxml: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /mirfoldertreeview/src/main/groovy/io/github/mcolletta/mirfoldertreeview/resources/icons/cdaudio_mount.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirfoldertreeview/src/main/groovy/io/github/mcolletta/mirfoldertreeview/resources/icons/cdaudio_mount.png -------------------------------------------------------------------------------- /mirfoldertreeview/src/main/groovy/io/github/mcolletta/mirfoldertreeview/resources/icons/file_doc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirfoldertreeview/src/main/groovy/io/github/mcolletta/mirfoldertreeview/resources/icons/file_doc.png -------------------------------------------------------------------------------- /mirfoldertreeview/src/main/groovy/io/github/mcolletta/mirfoldertreeview/resources/icons/folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirfoldertreeview/src/main/groovy/io/github/mcolletta/mirfoldertreeview/resources/icons/folder.png -------------------------------------------------------------------------------- /mirfoldertreeview/src/main/groovy/io/github/mcolletta/mirfoldertreeview/resources/icons/groovy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirfoldertreeview/src/main/groovy/io/github/mcolletta/mirfoldertreeview/resources/icons/groovy.png -------------------------------------------------------------------------------- /mirfoldertreeview/src/main/groovy/io/github/mcolletta/mirfoldertreeview/resources/icons/java.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirfoldertreeview/src/main/groovy/io/github/mcolletta/mirfoldertreeview/resources/icons/java.png -------------------------------------------------------------------------------- /mirfoldertreeview/src/main/groovy/io/github/mcolletta/mirfoldertreeview/resources/icons/midi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirfoldertreeview/src/main/groovy/io/github/mcolletta/mirfoldertreeview/resources/icons/midi.png -------------------------------------------------------------------------------- /mirfoldertreeview/src/main/groovy/io/github/mcolletta/mirfoldertreeview/resources/icons/mix_audio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirfoldertreeview/src/main/groovy/io/github/mcolletta/mirfoldertreeview/resources/icons/mix_audio.png -------------------------------------------------------------------------------- /mirfoldertreeview/src/main/groovy/io/github/mcolletta/mirfoldertreeview/resources/icons/mix_midi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirfoldertreeview/src/main/groovy/io/github/mcolletta/mirfoldertreeview/resources/icons/mix_midi.png -------------------------------------------------------------------------------- /mirfoldertreeview/src/main/groovy/io/github/mcolletta/mirfoldertreeview/resources/icons/music.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirfoldertreeview/src/main/groovy/io/github/mcolletta/mirfoldertreeview/resources/icons/music.png -------------------------------------------------------------------------------- /mirfoldertreeview/src/main/groovy/io/github/mcolletta/mirfoldertreeview/resources/icons/pdf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirfoldertreeview/src/main/groovy/io/github/mcolletta/mirfoldertreeview/resources/icons/pdf.png -------------------------------------------------------------------------------- /mirfoldertreeview/src/main/groovy/io/github/mcolletta/mirfoldertreeview/resources/icons/sc_open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirfoldertreeview/src/main/groovy/io/github/mcolletta/mirfoldertreeview/resources/icons/sc_open.png -------------------------------------------------------------------------------- /mirfoldertreeview/src/main/groovy/io/github/mcolletta/mirfoldertreeview/resources/icons/tar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirfoldertreeview/src/main/groovy/io/github/mcolletta/mirfoldertreeview/resources/icons/tar.png -------------------------------------------------------------------------------- /mirfoldertreeview/src/main/groovy/io/github/mcolletta/mirfoldertreeview/resources/icons/xml.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirfoldertreeview/src/main/groovy/io/github/mcolletta/mirfoldertreeview/resources/icons/xml.png -------------------------------------------------------------------------------- /mirfoldertreeview/src/main/groovy/io/github/mcolletta/mirfoldertreeview/styles.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2016-2017 Mirco Colletta 3 | * 4 | * This file is part of MirComp. 5 | * 6 | * MirComp 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 | * MirComp 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 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with MirComp. If not, see . 18 | */ 19 | 20 | /** 21 | * @author Mirco Colletta 22 | */ 23 | 24 | 25 | /*.folder-tree .tree-cell { 26 | -fx-background-color: #E9E9E9; 27 | -fx-text-fill: #1E1E1E; 28 | } 29 | 30 | .folder-tree .tree-cell:selected { 31 | -fx-background-color: #B9B9B9; 32 | -fx-text-fill: #FFFFFF; 33 | }*/ 34 | 35 | /*.folder-tree .tree-cell { 36 | -fx-background-color: #272822; 37 | -fx-text-fill: #ffffff; 38 | -fx-border-color: #??????; 39 | }*/ 40 | 41 | /*.folder-tree .tree-cell { 42 | -fx-background-color: #1E1F1C; 43 | -fx-text-fill: #E8E8E8; 44 | } 45 | 46 | .folder-tree .tree-cell:selected { 47 | -fx-background-color: #414339; 48 | -fx-text-fill: #E8E8E8; 49 | } 50 | 51 | .folder-tree .tree-cell > .tree-disclosure-node > .arrow { 52 | -fx-background-color: #E8E8E8; 53 | } 54 | .folder-tree .tree-cell:expanded > .tree-disclosure-node > .arrow { 55 | -fx-background-color: #E8E8E8; 56 | }*/ -------------------------------------------------------------------------------- /mirgene/.gitignore: -------------------------------------------------------------------------------- 1 | *.class 2 | Thumbs.db 3 | 4 | # Package Files # 5 | # *.jar 6 | *.war 7 | *.ear 8 | 9 | # Directories # 10 | .metadata 11 | .metadata* 12 | .recommenders 13 | .gradle 14 | bin 15 | build 16 | /doc 17 | 18 | 19 | # Eclipse settings (should be generated with Gradle import in Eclipse) 20 | .project 21 | .classpath 22 | .settings 23 | 24 | # IntelliJ IDEA settings (should be generated with Gradle import in Eclipse) 25 | .idea 26 | *.iml -------------------------------------------------------------------------------- /mirgene/README.md: -------------------------------------------------------------------------------- 1 | # mirgene 2 | 3 | **MirGene** is a Grammatical Evolution library 4 | 5 | The library has several components. 6 | 7 | **MirGram** is the component that generates programs based on novel _stochastic weighted and adaptable_ attribute grammars created by Mirco Colletta for musical purposes. 8 | The weights and the mechanism to control the derivation length borrows ideas from the software _ImproVisor_ (updating arithmetic attributes) but it is introduced the concept of "guards" to avoid undesirable matches. 9 | A MirGram has semantic actions that allows to: 10 | - modify the current grammar (by adding new rules) during the derivation 11 | - generate unique names for symbol/variable definition (global symbol table) 12 | Moreover, inside an action the results from previous NonTerminals (NT) within the current production rule are available and can be used. 13 | While the implementation of the adaptability is based on the concept of _Christiansen Grammars_ in MirGram the grammars are not explicit as attributes (which are reserved to control the derivation lenght) but they are managed implicity. The _cut_ action is instead inspired by the _Prolog_ language. 14 | 15 | 16 | **MirGene** is the genetic programming component based on sexual reproduction and that uses _female choice selection_. 17 | 18 | See the _References_ section for some of the papers that have inspired this work. 19 | 20 | 21 | MirGene is part of MirComp and is released under the GPL3 License, see the LICENSE file for details. 22 | 23 | Copyright (c) 2016-2024 Mirco Colletta 24 | 25 | 26 | ## References 27 | 28 | _A Grammatical Approach to Automatic Improvisation_ 29 | Robert M. Keller, David R. Morrison 30 | 31 | _Christiansen Grammar Evolution: Grammatical Evolution With Semantics_ 32 | Alfonso Ortega, Marina de la Cruz, Manuel Alfonseca 33 | 34 | _Sexual Selection for Genetic Algorithms_ 35 | Kai Song Goh, Andrew Lim, Brian Rodrigues 36 | 37 | _Grammatical Evolution: Evolving Programs for an Arbitrary Language_ 38 | Conor Ryan, J.J. Collins, Michael O'Neill 39 | 40 | _Grammar based function definition in Grammatical Evolution_ 41 | Michael O'Neill, Conor Ryan 42 | 43 | _Grammatical Evolution: A tutorial using gramEval_ 44 | Farzad Noorian, Anthony M. de Silva, Philip H.W. Leong 45 | 46 | -------------------------------------------------------------------------------- /mirgene/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'groovy' 2 | apply plugin: 'application' 3 | 4 | sourceSets { 5 | main { 6 | groovy { 7 | srcDirs = ['src/main/groovy'] 8 | } 9 | resources { 10 | srcDirs = ["src/test/groovy"] 11 | } 12 | } 13 | test { 14 | groovy { 15 | srcDirs = ['src/test/groovy'] 16 | } 17 | resources { 18 | srcDirs = ['src/test/groovy'] 19 | } 20 | } 21 | } 22 | 23 | jar { 24 | manifest.attributes 'Created-By': 'Mirco Colletta' 25 | } 26 | 27 | 28 | task runScript(type: JavaExec) { 29 | description 'Run Simple Demo' 30 | mainClass = 'io.github.mcolletta.mirgene.Demo' 31 | classpath = sourceSets.main.runtimeClasspath 32 | 33 | if (project.hasProperty('custom_arg')) { 34 | args project.getProperty('custom_arg') 35 | } 36 | } 37 | 38 | defaultTasks 'runScript' -------------------------------------------------------------------------------- /mirgene/src/test/groovy/io/github/mcolletta/mirgene/GrammarTests.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2016-2023 Mirco Colletta 3 | * 4 | * This file is part of MirComp. 5 | * 6 | * MirComp 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 | * MirComp 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 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with MirComp. If not, see . 18 | */ 19 | 20 | /** 21 | * @author Mirco Colletta 22 | */ 23 | 24 | package io.github.mcolletta.mirgene 25 | 26 | import groovy.test.GroovyTestCase 27 | 28 | class GrammarTests extends GroovyTestCase { 29 | 30 | void testChordProgression() { 31 | def grammarText = getClass().getResourceAsStream("resources/grammars/chordprogression.mirgram").getText() 32 | def gr = new MirGram(grammarText, "progression", 3, true) 33 | def cods = [] 34 | def rand = new Random(123456789L) 35 | (1..1000).each { 36 | cods << rand.nextInt(256) 37 | } 38 | def result = gr.translate(cods) 39 | assert result.trim() == "C Amin F G C Amin G C Amin Dmin G C" 40 | } 41 | } -------------------------------------------------------------------------------- /mirgene/src/test/groovy/io/github/mcolletta/mirgene/GrammaticalEvolutionTests.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2016-2023 Mirco Colletta 3 | * 4 | * This file is part of MirComp. 5 | * 6 | * MirComp 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 | * MirComp 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 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with MirComp. If not, see . 18 | */ 19 | 20 | /** 21 | * @author Mirco Colletta 22 | */ 23 | 24 | package io.github.mcolletta.mirgene 25 | 26 | import groovy.test.GroovyTestCase 27 | 28 | class GrammaticalEvolutionTests extends GroovyTestCase { 29 | 30 | void testKeplerGE() { 31 | def grammarText = getClass().getResourceAsStream("resources/grammars/symreg.mirgram").getText() 32 | def gr = new MirGram(grammarText, "closure", 3) 33 | Map data = [0.72f: 0.61f, 1.00f: 1.00f, 1.52f: 1.84f, 5.20f: 11.90f, 9.53f: 29.40f, 19.10f: 83.50f] 34 | def fit = new SymbolicRegression(data) 35 | def ge = new MirGene(gr,fit,100L).with { 36 | populationSize = 25 37 | genomeSize = 100 38 | maxGenerations = 5 39 | it 40 | } 41 | def best = ge.runGE() 42 | assert best.individual.blueprint.trim() == "{ float distance -> sqrt(pow(distance,3))}" 43 | assert best.fitness == 0.02018882f 44 | } 45 | } -------------------------------------------------------------------------------- /mirgene/src/test/groovy/io/github/mcolletta/mirgene/resources/grammars/chordprogression.mirgram: -------------------------------------------------------------------------------- 1 | ::= \s 2 | 3 | ::= 4 | ::= 5 | ::= 6 | ::= 7 | ::= 8 | ::= 9 | ::= 10 | 11 | ::= \s 12 | 13 | ::= \s | 14 | \s | 15 | \s | 16 | \s 17 | 18 | ::= \s | 19 | \s | 20 | \s 21 | 22 | ::= \s | 23 | \s | 24 | \s | 25 | \s 26 | 27 | ::= \s | 28 | \s | 29 | \s 30 | 31 | ::= \s | 32 | \s 33 | 34 | ::= \s | 35 | \s | 36 | \s 37 | 38 | ::= C 39 | 40 | ::= Dmin 41 | 42 | ::= Emin 43 | 44 | ::= F 45 | 46 | ::= G 47 | 48 | ::= Amin 49 | 50 | ::= Bdim 51 | -------------------------------------------------------------------------------- /mirgene/src/test/groovy/io/github/mcolletta/mirgene/resources/grammars/chordprogression2.mirgram: -------------------------------------------------------------------------------- 1 | ::= =1 ~1 (clef "treble") =2 ~1 (clef "bass") \n 2 | 3 | 4 | ::= empty 5 | 6 | ::= \n 7 | 8 | ::= | 9 | 10 | ::= empty 11 | 12 | ::= \s !40 13 | ::= \s !20 14 | ::= \s !10 15 | 16 | ::= 17 | ::= 18 | ::= 19 | 20 | ::= =2 \s `1/8 \s \s =1 \s <%/%> 21 | ::= =2 \s `1/4 \s \s =1 \s <%/%> 22 | ::= =2 \s `1/2 \s \s =1 \s <%/%> 23 | ::= =2 \s `1/1 \s \s =1 \s <%/%> 24 | 25 | ::= I | IImin | IV | IV | VImin | VIIdim 26 | 27 | ::= 1 | 2 | 3 28 | 29 | ::= empty 30 | ::= \s !10 31 | ::= \s !50 32 | ::= \s !30 33 | 34 | ::= ^3 \s 35 | <%+ 36 | ::= (ch \s \s ${sym} \s x8) 37 | ::= (ch \s \s ${sym} \s x4) 38 | ::= (ch \s \s ${sym} \s x2) 39 | %> 40 | -------------------------------------------------------------------------------- /mirgene/src/test/groovy/io/github/mcolletta/mirgene/resources/grammars/melody.mirgram: -------------------------------------------------------------------------------- 1 | 2 | ::= =1 ~1 \n 3 | <%+ ::= ^4 !80 | ^3 !20 %> \s 4 | <%/%> \n 5 | ; CHORUS \n 6 | <%+ 7 | ::= ^4 !50 | ^5 !50 8 | ::= \s !5 | 9 | \s !10 10 | ::= 16 11 | %> 12 | \s 13 | <%/%> \n 14 | ; ENDING \n 15 | <%+ ::= ^4 !80 | ^3 !20 %> \s 16 | 17 | ::= 18 | 19 | ::= \n 20 | 21 | ::= 22 | 23 | ::= 24 | 25 | ::= \s 26 | 27 | ::= (def : \s { \s }) 28 | <%+ 29 | ::= :${id} \s !35 | 30 | ( \s :${id}) \s ) !10 31 | %> 32 | 33 | ::= <%= phrase %> 34 | 35 | ::= 1 !90 | 2 !10 36 | ::= transposeDiatonic \s \s "maj" 37 | 38 | ::= c | d | e | f | g | a | b 39 | 40 | ::= empty !90 | 41 | # !5 | 42 | & !5 43 | 44 | ::= 45 | 46 | ::= empty 47 | 48 | ::= \s !5 49 | 50 | ::= \s !10 51 | 52 | ::= \s !70 53 | 54 | ::= \s !10 55 | 56 | ::= 8 57 | ::= 4 58 | ::= 2 59 | ::= 1 60 | -------------------------------------------------------------------------------- /mirgene/src/test/groovy/io/github/mcolletta/mirgene/resources/grammars/symreg.mirgram: -------------------------------------------------------------------------------- 1 | ::= { float distance -\gt \s 2 | 3 | } 4 | 5 | ::= () | 6 | () | 7 | 8 | ::= sin | cos | log | sqrt 9 | ::= + | - | * 10 | ::= distance | pow(distance,) | 11 | ::= 1 | 2 | 3 | 4 -------------------------------------------------------------------------------- /mirgene/src/test/groovy/io/github/mcolletta/mirgene/resources/grammars/test.mirgram: -------------------------------------------------------------------------------- 1 | ::= 2 | 3 | ::= 4 | ::= 5 | 6 | ::= def = ; 7 | <%+ ::= ${id} !3 %> 8 | 9 | ::= <%= pippo %> 10 | 11 | ::= 12 | 13 | ::= 0|1|2|3|4|5|6|7|8|9 14 | 15 | ::= 16 | ::= 17 | 18 | ::= ; 19 | 20 | ::= 21 | 22 | ::= + !70 | 23 | - !30 24 | 25 | 26 | -------------------------------------------------------------------------------- /miride/.gitignore: -------------------------------------------------------------------------------- 1 | *.class 2 | Thumbs.db 3 | 4 | # Package Files # 5 | # *.jar 6 | *.war 7 | *.ear 8 | 9 | # Directories # 10 | .metadata 11 | .metadata* 12 | .recommenders 13 | .gradle 14 | bin 15 | build 16 | /doc 17 | 18 | 19 | # Eclipse settings (should be generated with Gradle import in Eclipse) 20 | .project 21 | .classpath 22 | .settings 23 | 24 | # IntelliJ IDEA settings (should be generated with Gradle import in Eclipse) 25 | .idea 26 | *.iml -------------------------------------------------------------------------------- /miride/src/main/groovy/io/github/mcolletta/miride/Utils.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2016-2021 Mirco Colletta 3 | * 4 | * This file is part of MirComp. 5 | * 6 | * MirComp 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 | * MirComp 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 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with MirComp. If not, see . 18 | */ 19 | 20 | /** 21 | * @author Mirco Colletta 22 | */ 23 | 24 | package io.github.mcolletta.miride 25 | 26 | import java.io.File 27 | import java.io.IOException 28 | import java.nio.file.Path 29 | 30 | //import java.security.MessageDigest 31 | 32 | protected class Utils { 33 | 34 | protected static final File makeDir(File parentFolder, String name) { 35 | File folder 36 | if (parentFolder.isDirectory()) { 37 | folder = new File(parentFolder,name) 38 | boolean res = false 39 | try { 40 | res = folder.mkdir() 41 | } catch (IOException ex) { 42 | println ex.getMessage() 43 | ex.printStackTrace() 44 | } 45 | } 46 | return folder 47 | } 48 | 49 | protected static String getFileExt(Path path) { 50 | String ext = "" 51 | String fileName = path.getFileName() 52 | int i = fileName.toString().lastIndexOf('.') 53 | if (i > 0) { 54 | ext = fileName.substring(i+1); 55 | } 56 | return ext 57 | } 58 | 59 | /*protected static String getFileHash(Path filePath, String algorithm="MD5") { 60 | MessageDigest.getInstance(algorithm).digest(filePath.toFile().getBytes()).encodeHex().toString() 61 | }*/ 62 | 63 | } -------------------------------------------------------------------------------- /miride/src/main/groovy/io/github/mcolletta/miride/resources/icons/checkedclipboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/miride/src/main/groovy/io/github/mcolletta/miride/resources/icons/checkedclipboard.png -------------------------------------------------------------------------------- /miride/src/main/groovy/io/github/mcolletta/miride/resources/icons/edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/miride/src/main/groovy/io/github/mcolletta/miride/resources/icons/edit.png -------------------------------------------------------------------------------- /miride/src/main/groovy/io/github/mcolletta/miride/resources/icons/fileopen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/miride/src/main/groovy/io/github/mcolletta/miride/resources/icons/fileopen.png -------------------------------------------------------------------------------- /miride/src/main/groovy/io/github/mcolletta/miride/resources/icons/folder_new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/miride/src/main/groovy/io/github/mcolletta/miride/resources/icons/folder_new.png -------------------------------------------------------------------------------- /miride/src/main/groovy/io/github/mcolletta/miride/resources/icons/locked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/miride/src/main/groovy/io/github/mcolletta/miride/resources/icons/locked.png -------------------------------------------------------------------------------- /miride/src/main/groovy/io/github/mcolletta/miride/resources/icons/mix_audio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/miride/src/main/groovy/io/github/mcolletta/miride/resources/icons/mix_audio.png -------------------------------------------------------------------------------- /miride/src/main/groovy/io/github/mcolletta/miride/resources/icons/project_open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/miride/src/main/groovy/io/github/mcolletta/miride/resources/icons/project_open.png -------------------------------------------------------------------------------- /miride/src/main/groovy/io/github/mcolletta/miride/resources/icons/reload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/miride/src/main/groovy/io/github/mcolletta/miride/resources/icons/reload.png -------------------------------------------------------------------------------- /miride/src/main/groovy/io/github/mcolletta/miride/resources/icons/runprog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/miride/src/main/groovy/io/github/mcolletta/miride/resources/icons/runprog.png -------------------------------------------------------------------------------- /miride/src/main/groovy/io/github/mcolletta/miride/resources/icons/sc_controlproperties.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/miride/src/main/groovy/io/github/mcolletta/miride/resources/icons/sc_controlproperties.png -------------------------------------------------------------------------------- /miride/src/main/groovy/io/github/mcolletta/miride/resources/icons/stop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/miride/src/main/groovy/io/github/mcolletta/miride/resources/icons/stop.png -------------------------------------------------------------------------------- /miride/src/main/groovy/io/github/mcolletta/miride/resources/icons/view_sidetree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/miride/src/main/groovy/io/github/mcolletta/miride/resources/icons/view_sidetree.png -------------------------------------------------------------------------------- /miride/src/main/groovy/io/github/mcolletta/miride/resources/icons/view_tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/miride/src/main/groovy/io/github/mcolletta/miride/resources/icons/view_tree.png -------------------------------------------------------------------------------- /miride/src/main/groovy/io/github/mcolletta/miride/resources/icons/window_new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/miride/src/main/groovy/io/github/mcolletta/miride/resources/icons/window_new.png -------------------------------------------------------------------------------- /miride/src/main/groovy/io/github/mcolletta/miride/resources/icons/xconsole.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/miride/src/main/groovy/io/github/mcolletta/miride/resources/icons/xconsole.png -------------------------------------------------------------------------------- /miride/src/main/groovy/io/github/mcolletta/miride/resources/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/miride/src/main/groovy/io/github/mcolletta/miride/resources/images/logo.png -------------------------------------------------------------------------------- /miride/src/main/groovy/io/github/mcolletta/miride/resources/info.txt: -------------------------------------------------------------------------------- 1 | MirIDE - MirComp Integrated Development Environment 2 | Version: 1.0.0-beta.7 3 | 4 | Copyright (C) 2016-2025 Mirco Colletta 5 | 6 | This program is distributed under the GNU General Public License version 3. 7 | 8 | This program comes with ABSOLUTELY NO WARRANTY. 9 | 10 | This program is free software: you can redistribute it and/or modify 11 | it under the terms of the GNU General Public License as published by 12 | the Free Software Foundation, either version 3 of the License, or 13 | (at your option) any later version. 14 | 15 | This program is distributed in the hope that it will be useful, 16 | but WITHOUT ANY WARRANTY; without even the implied warranty of 17 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 | GNU General Public License for more details. 19 | 20 | You should have received a copy of the GNU General Public License 21 | along with MirComp. If not, see . -------------------------------------------------------------------------------- /mirmidi/.gitignore: -------------------------------------------------------------------------------- 1 | *.class 2 | Thumbs.db 3 | 4 | # Package Files # 5 | # *.jar 6 | *.war 7 | *.ear 8 | 9 | # Directories # 10 | .metadata 11 | .metadata* 12 | .recommenders 13 | .gradle 14 | bin 15 | build 16 | /doc 17 | 18 | 19 | # Eclipse settings (should be generated with Gradle import in Eclipse) 20 | .project 21 | .classpath 22 | .settings 23 | 24 | # IntelliJ IDEA settings (should be generated with Gradle import in Eclipse) 25 | .idea 26 | *.iml -------------------------------------------------------------------------------- /mirmidi/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'groovy' 2 | apply plugin: 'application' 3 | 4 | 5 | dependencies { 6 | implementation project(':mirchord') 7 | implementation project(':mirfoldertreeview') 8 | implementation project(':mirutils') 9 | } 10 | 11 | sourceSets { 12 | main { 13 | groovy { 14 | srcDirs = ['src/main/groovy'] 15 | } 16 | resources { 17 | srcDirs = ["src/main/groovy"] 18 | } 19 | } 20 | } 21 | 22 | jar { 23 | manifest.attributes 'Created-By': 'Mirco Colletta' 24 | } 25 | 26 | task runScript(type: JavaExec) { 27 | description 'Run Simple Demo' 28 | mainClass = 'io.github.mcolletta.mirmidi.Demo' 29 | classpath = sourceSets.main.runtimeClasspath 30 | 31 | if (project.hasProperty('custom_arg')) { 32 | args project.getProperty('custom_arg') 33 | } 34 | } 35 | 36 | defaultTasks 'runScript' -------------------------------------------------------------------------------- /mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/Demo.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2016-2017 Mirco Colletta 3 | * 4 | * This file is part of MirComp. 5 | * 6 | * MirComp 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 | * MirComp 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 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with MirComp. If not, see . 18 | */ 19 | 20 | /** 21 | * @author Mirco Colletta 22 | */ 23 | 24 | package io.github.mcolletta.mirmidi 25 | 26 | 27 | import java.io.IOException 28 | import javafx.application.Platform 29 | import javafx.application.Application 30 | import javafx.scene.Scene 31 | import javafx.scene.layout.StackPane 32 | import javafx.stage.Stage 33 | 34 | 35 | public class Demo extends Application { 36 | 37 | @Override 38 | public void start(Stage stage) throws Exception { 39 | StackPane root = new StackPane() 40 | 41 | MidiEditor editor = new MidiEditor() 42 | 43 | root.getChildren().add(editor) 44 | 45 | Scene scene = new Scene(root, 1000, 700) 46 | 47 | stage.setScene(scene) 48 | stage.show() 49 | } 50 | 51 | public static void main(String[] args) throws IOException { 52 | Application.launch(Demo, args) 53 | Platform.exit() 54 | println "stopped" 55 | System.exit(0) 56 | } 57 | 58 | } 59 | -------------------------------------------------------------------------------- /mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/color_line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/color_line.png -------------------------------------------------------------------------------- /mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/colorman.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/colorman.png -------------------------------------------------------------------------------- /mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/enumlist1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/enumlist1.png -------------------------------------------------------------------------------- /mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/eraser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/eraser.png -------------------------------------------------------------------------------- /mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/fileopen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/fileopen.png -------------------------------------------------------------------------------- /mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/insert_table_row.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/insert_table_row.png -------------------------------------------------------------------------------- /mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/kcmmidi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/kcmmidi.png -------------------------------------------------------------------------------- /mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/kmixdocked_mute.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/kmixdocked_mute.png -------------------------------------------------------------------------------- /mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/mini_autoform.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/mini_autoform.png -------------------------------------------------------------------------------- /mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/mix_midi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/mix_midi.png -------------------------------------------------------------------------------- /mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/move.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/move.png -------------------------------------------------------------------------------- /mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/new_window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/new_window.png -------------------------------------------------------------------------------- /mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/player_eject.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/player_eject.png -------------------------------------------------------------------------------- /mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/player_end.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/player_end.png -------------------------------------------------------------------------------- /mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/player_fwd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/player_fwd.png -------------------------------------------------------------------------------- /mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/player_pause.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/player_pause.png -------------------------------------------------------------------------------- /mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/player_play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/player_play.png -------------------------------------------------------------------------------- /mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/player_rew.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/player_rew.png -------------------------------------------------------------------------------- /mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/player_start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/player_start.png -------------------------------------------------------------------------------- /mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/player_stop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/player_stop.png -------------------------------------------------------------------------------- /mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/player_time.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/player_time.png -------------------------------------------------------------------------------- /mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/redo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/redo.png -------------------------------------------------------------------------------- /mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/reload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/reload.png -------------------------------------------------------------------------------- /mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/sc_aligncenter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/sc_aligncenter.png -------------------------------------------------------------------------------- /mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/sc_arrowshapes.striped-right-arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/sc_arrowshapes.striped-right-arrow.png -------------------------------------------------------------------------------- /mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/sc_autoformat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/sc_autoformat.png -------------------------------------------------------------------------------- /mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/sc_beziersmooth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/sc_beziersmooth.png -------------------------------------------------------------------------------- /mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/sc_beziersmooth2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/sc_beziersmooth2.png -------------------------------------------------------------------------------- /mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/sc_connectorline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/sc_connectorline.png -------------------------------------------------------------------------------- /mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/sc_firstrecord.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/sc_firstrecord.png -------------------------------------------------------------------------------- /mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/sc_freeline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/sc_freeline.png -------------------------------------------------------------------------------- /mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/sc_lastrecord.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/sc_lastrecord.png -------------------------------------------------------------------------------- /mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/sc_nextrecord.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/sc_nextrecord.png -------------------------------------------------------------------------------- /mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/sc_prevrecord.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/sc_prevrecord.png -------------------------------------------------------------------------------- /mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/sc_save.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/sc_save.png -------------------------------------------------------------------------------- /mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/sc_saveas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/sc_saveas.png -------------------------------------------------------------------------------- /mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/sc_selectobject.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/sc_selectobject.png -------------------------------------------------------------------------------- /mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/sc_selecttable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/sc_selecttable.png -------------------------------------------------------------------------------- /mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/sc_spinbutton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/sc_spinbutton.png -------------------------------------------------------------------------------- /mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/sc_toggleaxisdescr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/sc_toggleaxisdescr.png -------------------------------------------------------------------------------- /mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/sc_zoom100percent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/sc_zoom100percent.png -------------------------------------------------------------------------------- /mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/sc_zoomin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/sc_zoomin.png -------------------------------------------------------------------------------- /mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/sc_zoomout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/sc_zoomout.png -------------------------------------------------------------------------------- /mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/undo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirmidi/src/main/groovy/io/github/mcolletta/mirmidi/resources/icons/undo.png -------------------------------------------------------------------------------- /mirscore/.gitignore: -------------------------------------------------------------------------------- 1 | *.class 2 | Thumbs.db 3 | 4 | # Package Files # 5 | # *.jar 6 | *.war 7 | *.ear 8 | 9 | # Directories # 10 | .metadata 11 | .metadata* 12 | .recommenders 13 | .gradle 14 | bin 15 | build 16 | /doc 17 | 18 | 19 | # Eclipse settings (should be generated with Gradle import in Eclipse) 20 | .project 21 | .classpath 22 | .settings 23 | 24 | # IntelliJ IDEA settings (should be generated with Gradle import in Eclipse) 25 | .idea 26 | *.iml -------------------------------------------------------------------------------- /mirscore/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'groovy' 2 | apply plugin: 'application' 3 | 4 | dependencies { 5 | implementation project(':mirfoldertreeview') 6 | implementation project(':mirutils') 7 | } 8 | 9 | sourceSets { 10 | main { 11 | groovy { 12 | srcDirs = ['src/main/groovy'] 13 | } 14 | resources { 15 | srcDirs = ["src/main/groovy"] 16 | } 17 | } 18 | } 19 | 20 | jar { 21 | manifest.attributes 'Created-By': 'Mirco Colletta' 22 | } 23 | 24 | task runScript(type: JavaExec) { 25 | description 'Run Simple Demo' 26 | mainClass = 'io.github.mcolletta.mirscore.Demo' 27 | classpath = sourceSets.main.runtimeClasspath 28 | 29 | if (project.hasProperty('custom_arg')) { 30 | args project.getProperty('custom_arg') 31 | } 32 | } 33 | 34 | defaultTasks 'runScript' -------------------------------------------------------------------------------- /mirscore/src/main/groovy/io/github/mcolletta/mirscore/Demo.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2016-2017 Mirco Colletta 3 | * 4 | * This file is part of MirComp. 5 | * 6 | * MirComp 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 | * MirComp 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 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with MirComp. If not, see . 18 | */ 19 | 20 | /** 21 | * @author Mirco Colletta 22 | */ 23 | 24 | package io.github.mcolletta.mirscore 25 | 26 | 27 | import java.io.IOException 28 | import javafx.application.Platform 29 | import javafx.application.Application 30 | import javafx.scene.Scene 31 | import javafx.scene.layout.StackPane 32 | import javafx.stage.Stage 33 | 34 | 35 | public class Demo extends Application { 36 | 37 | @Override 38 | public void start(Stage stage) throws Exception { 39 | StackPane root = new StackPane() 40 | 41 | ScoreViewer viewer = new ScoreViewer() 42 | 43 | root.getChildren().add(viewer) 44 | 45 | Scene scene = new Scene(root, 950, 700) 46 | 47 | stage.setScene(scene) 48 | stage.show() 49 | } 50 | 51 | public static void main(String[] args) throws IOException { 52 | Application.launch(Demo, args) 53 | Platform.exit() 54 | println "stopped" 55 | System.exit(0) 56 | } 57 | 58 | } 59 | -------------------------------------------------------------------------------- /mirscore/src/main/groovy/io/github/mcolletta/mirscore/resources/icons/fileopen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirscore/src/main/groovy/io/github/mcolletta/mirscore/resources/icons/fileopen.png -------------------------------------------------------------------------------- /mirscore/src/main/groovy/io/github/mcolletta/mirscore/resources/icons/move.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirscore/src/main/groovy/io/github/mcolletta/mirscore/resources/icons/move.png -------------------------------------------------------------------------------- /mirscore/src/main/groovy/io/github/mcolletta/mirscore/resources/icons/player_eject.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirscore/src/main/groovy/io/github/mcolletta/mirscore/resources/icons/player_eject.png -------------------------------------------------------------------------------- /mirscore/src/main/groovy/io/github/mcolletta/mirscore/resources/icons/player_end.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirscore/src/main/groovy/io/github/mcolletta/mirscore/resources/icons/player_end.png -------------------------------------------------------------------------------- /mirscore/src/main/groovy/io/github/mcolletta/mirscore/resources/icons/player_fwd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirscore/src/main/groovy/io/github/mcolletta/mirscore/resources/icons/player_fwd.png -------------------------------------------------------------------------------- /mirscore/src/main/groovy/io/github/mcolletta/mirscore/resources/icons/player_pause.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirscore/src/main/groovy/io/github/mcolletta/mirscore/resources/icons/player_pause.png -------------------------------------------------------------------------------- /mirscore/src/main/groovy/io/github/mcolletta/mirscore/resources/icons/player_play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirscore/src/main/groovy/io/github/mcolletta/mirscore/resources/icons/player_play.png -------------------------------------------------------------------------------- /mirscore/src/main/groovy/io/github/mcolletta/mirscore/resources/icons/player_rew.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirscore/src/main/groovy/io/github/mcolletta/mirscore/resources/icons/player_rew.png -------------------------------------------------------------------------------- /mirscore/src/main/groovy/io/github/mcolletta/mirscore/resources/icons/player_start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirscore/src/main/groovy/io/github/mcolletta/mirscore/resources/icons/player_start.png -------------------------------------------------------------------------------- /mirscore/src/main/groovy/io/github/mcolletta/mirscore/resources/icons/player_stop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirscore/src/main/groovy/io/github/mcolletta/mirscore/resources/icons/player_stop.png -------------------------------------------------------------------------------- /mirscore/src/main/groovy/io/github/mcolletta/mirscore/resources/icons/player_time.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirscore/src/main/groovy/io/github/mcolletta/mirscore/resources/icons/player_time.png -------------------------------------------------------------------------------- /mirscore/src/main/groovy/io/github/mcolletta/mirscore/resources/icons/sc_arrowshapes.striped-right-arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirscore/src/main/groovy/io/github/mcolletta/mirscore/resources/icons/sc_arrowshapes.striped-right-arrow.png -------------------------------------------------------------------------------- /mirscore/src/main/groovy/io/github/mcolletta/mirscore/resources/icons/sc_firstpage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirscore/src/main/groovy/io/github/mcolletta/mirscore/resources/icons/sc_firstpage.png -------------------------------------------------------------------------------- /mirscore/src/main/groovy/io/github/mcolletta/mirscore/resources/icons/sc_firstrecord.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirscore/src/main/groovy/io/github/mcolletta/mirscore/resources/icons/sc_firstrecord.png -------------------------------------------------------------------------------- /mirscore/src/main/groovy/io/github/mcolletta/mirscore/resources/icons/sc_lastpage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirscore/src/main/groovy/io/github/mcolletta/mirscore/resources/icons/sc_lastpage.png -------------------------------------------------------------------------------- /mirscore/src/main/groovy/io/github/mcolletta/mirscore/resources/icons/sc_lastrecord.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirscore/src/main/groovy/io/github/mcolletta/mirscore/resources/icons/sc_lastrecord.png -------------------------------------------------------------------------------- /mirscore/src/main/groovy/io/github/mcolletta/mirscore/resources/icons/sc_nextrecord.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirscore/src/main/groovy/io/github/mcolletta/mirscore/resources/icons/sc_nextrecord.png -------------------------------------------------------------------------------- /mirscore/src/main/groovy/io/github/mcolletta/mirscore/resources/icons/sc_prevrecord.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirscore/src/main/groovy/io/github/mcolletta/mirscore/resources/icons/sc_prevrecord.png -------------------------------------------------------------------------------- /mirscore/src/main/groovy/io/github/mcolletta/mirscore/resources/icons/sc_save.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirscore/src/main/groovy/io/github/mcolletta/mirscore/resources/icons/sc_save.png -------------------------------------------------------------------------------- /mirscore/src/main/groovy/io/github/mcolletta/mirscore/resources/icons/sc_saveas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirscore/src/main/groovy/io/github/mcolletta/mirscore/resources/icons/sc_saveas.png -------------------------------------------------------------------------------- /mirscore/src/main/groovy/io/github/mcolletta/mirscore/resources/icons/sc_selectobject.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirscore/src/main/groovy/io/github/mcolletta/mirscore/resources/icons/sc_selectobject.png -------------------------------------------------------------------------------- /mirscore/src/main/groovy/io/github/mcolletta/mirscore/resources/icons/sc_zoom100percent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirscore/src/main/groovy/io/github/mcolletta/mirscore/resources/icons/sc_zoom100percent.png -------------------------------------------------------------------------------- /mirscore/src/main/groovy/io/github/mcolletta/mirscore/resources/icons/sc_zoomin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirscore/src/main/groovy/io/github/mcolletta/mirscore/resources/icons/sc_zoomin.png -------------------------------------------------------------------------------- /mirscore/src/main/groovy/io/github/mcolletta/mirscore/resources/icons/sc_zoomout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirscore/src/main/groovy/io/github/mcolletta/mirscore/resources/icons/sc_zoomout.png -------------------------------------------------------------------------------- /mirsynth/build.gradle: -------------------------------------------------------------------------------- 1 | plugins { 2 | id 'groovy' 3 | id 'application' 4 | } 5 | 6 | application { 7 | mainClass = 'io.github.mcolletta.mirsynth' 8 | } 9 | 10 | sourceSets { 11 | main { 12 | groovy { 13 | srcDirs = ['src/main/groovy'] 14 | } 15 | resources { 16 | srcDirs = ["src/main/groovy"] 17 | } 18 | } 19 | } 20 | 21 | jar { 22 | manifest.attributes 'Created-By': 'Mirco Colletta' 23 | } 24 | 25 | 26 | task runScript(type: JavaExec) { 27 | description 'Run Simple Demo' 28 | mainClass = 'io.github.mcolletta.mirsynth.ExampleOscillators' 29 | classpath = sourceSets.main.runtimeClasspath 30 | standardInput = System.in 31 | 32 | jvmArgs = [ 33 | "--add-exports", "java.desktop/com.sun.media.sound=ALL-UNNAMED", 34 | ] 35 | 36 | if (project.hasProperty('custom_arg')) { 37 | args project.getProperty('custom_arg') 38 | } 39 | } 40 | 41 | defaultTasks 'runScript' 42 | 43 | -------------------------------------------------------------------------------- /mirsynth/src/main/groovy/io/github/mcolletta/mirsynth/Complex.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2016-2021 Mirco Colletta 3 | * 4 | * This file is part of MirComp. 5 | * 6 | * MirComp 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 | * MirComp 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 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with MirComp. If not, see . 18 | */ 19 | 20 | /** 21 | * @author Mirco Colletta 22 | */ 23 | 24 | package io.github.mcolletta.mirsynth 25 | 26 | 27 | class Complex { 28 | float Re 29 | float Im 30 | static final j = new Complex(0.0f, 1.0f) 31 | 32 | Complex(float re, float im) { 33 | Re = re 34 | Im = im 35 | } 36 | 37 | Complex plus(Complex c) { 38 | return new Complex(Re + c.Re, Im + c.Im) 39 | } 40 | 41 | Complex minus(Complex c) { 42 | return new Complex(Re - c.Re, Im - c.Im) 43 | } 44 | 45 | Complex multiply(Complex c) { 46 | return new Complex(Re * c.Re - Im * c.Im, Re * c.Im + Im * c.Re) 47 | } 48 | 49 | Complex div(Complex c) { 50 | float denom = (float) (c.Re ** 2 + c.Im ** 2) 51 | return new Complex((float) ((Re * c.Re + Im * c.Im) / denom), (float) ((Im * c.Re - Re * c.Im) / denom)) 52 | } 53 | 54 | float abs() { 55 | return Math.sqrt((float) (Re ** 2 + Im ** 2)) 56 | } 57 | 58 | String toString() { 59 | return Re + (Im >= 0 ? "+" : "") + Im + "j" 60 | } 61 | } 62 | 63 | -------------------------------------------------------------------------------- /mirsynth/src/main/groovy/io/github/mcolletta/mirsynth/DSP/MirOscillator.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2016-2023 Mirco Colletta 3 | * 4 | * This file is part of MirComp. 5 | * 6 | * MirComp 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 | * MirComp 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 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with MirComp. If not, see . 18 | */ 19 | 20 | /** 21 | * @author Mirco Colletta 22 | */ 23 | 24 | 25 | package io.github.mcolletta.mirsynth 26 | 27 | import static Utils.* 28 | import static java.lang.Math.* 29 | 30 | import com.sun.media.sound.ModelAbstractOscillator 31 | 32 | 33 | class MirOscillator extends ModelAbstractOscillator { 34 | 35 | int last_n = 0 36 | MirSynth mirsynth 37 | 38 | public int read(float[][] buffers, int offset, int len) throws IOException { 39 | double Ts = 1/getSampleRate() 40 | float f0 = midiToFrequency(getPitch()) 41 | mirsynth.setSampleRate(getSampleRate()) 42 | if (!mirsynth.isFrequencySetted) 43 | mirsynth.setFrequency(f0) 44 | // Grab channel 0 buffer from buffers 45 | float[] buffer = buffers[0]; 46 | 47 | for (int i = 0; i < len; i++) { 48 | int n = i + last_n 49 | double t = n * Ts 50 | buffer[i] = (mirsynth != null) ? mirsynth.process(n, t) : 0.0f 51 | } 52 | last_n += len 53 | 54 | return len 55 | } 56 | 57 | } 58 | -------------------------------------------------------------------------------- /mirsynth/src/main/groovy/io/github/mcolletta/mirsynth/DSP/MirSynth.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2016-2023 Mirco Colletta 3 | * 4 | * This file is part of MirComp. 5 | * 6 | * MirComp 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 | * MirComp 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 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with MirComp. If not, see . 18 | */ 19 | 20 | /** 21 | * @author Mirco Colletta 22 | */ 23 | 24 | 25 | package io.github.mcolletta.mirsynth 26 | 27 | import static java.lang.Math.* 28 | 29 | class MirSynth { 30 | 31 | Boolean isFrequencySetted = false 32 | float f0 33 | float Fs = 44100.0 34 | double Ts = 2.2675736961451248E-5 35 | 36 | MirSynth() {} 37 | 38 | void setSampleRate(float samplerate) { 39 | Fs = samplerate 40 | Ts = 1/Fs 41 | } 42 | 43 | void setup(Map params) { 44 | // initialize 45 | } 46 | 47 | void setFrequency(float f0) { 48 | if (!isFrequencySetted) { 49 | this.f0 = f0 50 | isFrequencySetted = true 51 | } 52 | } 53 | 54 | float process(int n, double t) { 55 | // return (float)sin(2.0 * PI * f0 * t) 56 | return 0.0f 57 | } 58 | 59 | } 60 | -------------------------------------------------------------------------------- /mirsynth/src/main/groovy/io/github/mcolletta/mirsynth/DSP/instruments/AdditiveOscillator.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2016-2023 Mirco Colletta 3 | * 4 | * This file is part of MirComp. 5 | * 6 | * MirComp 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 | * MirComp 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 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with MirComp. If not, see . 18 | */ 19 | 20 | /** 21 | * @author Mirco Colletta 22 | */ 23 | 24 | package io.github.mcolletta.mirsynth 25 | 26 | import io.github.mcolletta.mirsynth.* 27 | import static io.github.mcolletta.mirsynth.Utils.midiToFrequency 28 | 29 | 30 | class AdditiveOscillator extends MirOscillator { 31 | 32 | AdditiveOscillator() { 33 | super() 34 | mirsynth = new AdditiveSynth() 35 | mirsynth.setF0(midiToFrequency(getPitch())) 36 | mirsynth.setSampleRate(getSampleRate()) 37 | mirsynth.setup([amplitudes: [1.5, 1.3, 2.7, 1.2, 3.3, 7.0] ]) 38 | } 39 | 40 | } -------------------------------------------------------------------------------- /mirsynth/src/main/groovy/io/github/mcolletta/mirsynth/DSP/instruments/DoubleFrequencyModulationSynthOscillator.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2016-2023 Mirco Colletta 3 | * 4 | * This file is part of MirComp. 5 | * 6 | * MirComp 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 | * MirComp 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 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with MirComp. If not, see . 18 | */ 19 | 20 | /** 21 | * @author Mirco Colletta 22 | */ 23 | 24 | package io.github.mcolletta.mirsynth 25 | 26 | import io.github.mcolletta.mirsynth.* 27 | import static io.github.mcolletta.mirsynth.Utils.midiToFrequency 28 | 29 | 30 | class DoubleFrequencyModulationOscillator extends MirOscillator { 31 | 32 | DoubleFrequencyModulationOscillator() { 33 | super() 34 | mirsynth = new DoubleFrequencyModulationSynth() 35 | mirsynth.setF0(midiToFrequency(getPitch())) 36 | mirsynth.setSampleRate(getSampleRate()) 37 | mirsynth.setup([operators: 38 | [ 39 | [A:0.537f, I1:2.373f, I2:1.637f, N1:1, N2:2], 40 | [A:1.073f, I1:4.379f, I2:0.512f, N1:1, N2:2], 41 | [A:3.437f, I1:0.747f, I2:0.190f, N1:2, N2:1] 42 | ] 43 | ]) 44 | } 45 | 46 | } 47 | -------------------------------------------------------------------------------- /mirsynth/src/main/groovy/io/github/mcolletta/mirsynth/DSP/instruments/FrequencyModulationOscillator.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2016-2023 Mirco Colletta 3 | * 4 | * This file is part of MirComp. 5 | * 6 | * MirComp 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 | * MirComp 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 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with MirComp. If not, see . 18 | */ 19 | 20 | /** 21 | * @author Mirco Colletta 22 | */ 23 | 24 | package io.github.mcolletta.mirsynth 25 | 26 | import io.github.mcolletta.mirsynth.* 27 | import static io.github.mcolletta.mirsynth.Utils.midiToFrequency 28 | 29 | 30 | class FrequencyModulationOscillator extends MirOscillator { 31 | 32 | FrequencyModulationOscillator() { 33 | super() 34 | mirsynth = new FrequencyModulationSynth() 35 | mirsynth.setF0(midiToFrequency(getPitch())) 36 | mirsynth.setSampleRate(getSampleRate()) 37 | mirsynth.setup([A: 1.5, envelope:[ [1.0, 200], [0.9, 100], [0.7, 300], [0.0, 100] ], Ic:1.5f, N1:3, N2:1]) 38 | } 39 | 40 | } -------------------------------------------------------------------------------- /mirsynth/src/main/groovy/io/github/mcolletta/mirsynth/DSP/instruments/SubtractiveOscillator.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2016-2023 Mirco Colletta 3 | * 4 | * This file is part of MirComp. 5 | * 6 | * MirComp 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 | * MirComp 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 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with MirComp. If not, see . 18 | */ 19 | 20 | /** 21 | * @author Mirco Colletta 22 | */ 23 | 24 | package io.github.mcolletta.mirsynth 25 | 26 | import io.github.mcolletta.mirsynth.* 27 | import static io.github.mcolletta.mirsynth.Utils.midiToFrequency 28 | 29 | 30 | class SubtractiveOscillator extends MirOscillator { 31 | 32 | SubtractiveOscillator() { 33 | super() 34 | mirsynth = new SubtractiveSynth() 35 | mirsynth.setF0(midiToFrequency(getPitch())) 36 | mirsynth.setSampleRate(getSampleRate()) 37 | mirsynth.setup([osc:"saw", Q:1.0f, cutoff:400.0f]) 38 | } 39 | 40 | } -------------------------------------------------------------------------------- /mirsynth/src/main/groovy/io/github/mcolletta/mirsynth/DSP/oscillators/AdditiveSynth.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2016-2023 Mirco Colletta 3 | * 4 | * This file is part of MirComp. 5 | * 6 | * MirComp 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 | * MirComp 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 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with MirComp. If not, see . 18 | */ 19 | 20 | /** 21 | * @author Mirco Colletta 22 | */ 23 | 24 | 25 | package io.github.mcolletta.mirsynth 26 | 27 | import java.util.Map; 28 | 29 | import io.github.mcolletta.mirsynth.* 30 | import static io.github.mcolletta.mirsynth.Utils.* 31 | import static java.lang.Math.* 32 | 33 | 34 | class AdditiveSynth extends MirSynth { 35 | 36 | AdditiveSynth() {} 37 | 38 | Map amplitudes 39 | 40 | void setup(Map params) { 41 | amplitudes = [:] 42 | int overtone = 1 43 | params['amplitudes'].each { float I -> 44 | amplitudes.put(overtone, I) 45 | } 46 | 47 | } 48 | 49 | float process(int n, double t) { 50 | float sum = 0 51 | amplitudes.each { ot, I -> 52 | sum += I * (float)sin( 2 * PI * ot * f0 * t) 53 | } 54 | return sum 55 | } 56 | 57 | } 58 | 59 | -------------------------------------------------------------------------------- /mirsynth/src/main/groovy/io/github/mcolletta/mirsynth/DSP/oscillators/DoubleFrequencyModulationSynth.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2016-2023 Mirco Colletta 3 | * 4 | * This file is part of MirComp. 5 | * 6 | * MirComp 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 | * MirComp 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 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with MirComp. If not, see . 18 | */ 19 | 20 | /** 21 | * @author Mirco Colletta 22 | */ 23 | 24 | 25 | package io.github.mcolletta.mirsynth 26 | 27 | import java.util.Map; 28 | 29 | import io.github.mcolletta.mirsynth.MirSynth 30 | import static io.github.mcolletta.mirsynth.Utils.* 31 | import static java.lang.Math.* 32 | 33 | 34 | class DoubleFrequencyModulationSynth extends MirSynth { 35 | 36 | /*DoubleFrequencyModulationSynth(float freq, float samplerate) { 37 | super(freq, samplerate) 38 | }*/ 39 | 40 | DoubleFrequencyModulationSynth() {} 41 | 42 | List A = [] 43 | List I1 = [] 44 | List I2 = [] 45 | List N1 = [] 46 | List N2 = [] 47 | 48 | int numOperators = 0 49 | 50 | void setup(Map params) { 51 | List operators = (List)params['operators'] 52 | numOperators = operators.size() 53 | operators.each { p -> 54 | A.add((float)p['A']) 55 | I1.add((float)p['I1']) 56 | I2.add((float)p['I2']) 57 | N1.add((float)p['N1']) 58 | N2.add((float)p['N2']) 59 | } 60 | } 61 | 62 | float process(int n, double t) { 63 | float sum = 0.0f 64 | (0..numOperators-1).each { i -> 65 | float f1 = f0 * N1[i] 66 | float f2 = f0 * N2[i] 67 | sum += dfm(t, A[i], I1[i], I2[i], f1, f2) 68 | } 69 | return sum 70 | } 71 | 72 | } 73 | -------------------------------------------------------------------------------- /mirsynth/src/main/groovy/io/github/mcolletta/mirsynth/DSP/oscillators/FrequencyModulationSynth.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2016-2023 Mirco Colletta 3 | * 4 | * This file is part of MirComp. 5 | * 6 | * MirComp 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 | * MirComp 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 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with MirComp. If not, see . 18 | */ 19 | 20 | /** 21 | * @author Mirco Colletta 22 | */ 23 | 24 | 25 | package io.github.mcolletta.mirsynth 26 | 27 | import java.util.List; 28 | import java.util.Map; 29 | 30 | import static io.github.mcolletta.mirsynth.Utils.* 31 | import static java.lang.Math.* 32 | 33 | 34 | class FrequencyModulationSynth extends MirSynth { 35 | 36 | FrequencyModulationSynth() {} 37 | 38 | Envelope amplitude 39 | float A 40 | float Ic 41 | float fc 42 | float ratio 43 | 44 | 45 | void setup(Map params) { 46 | A = (float)params['A'] 47 | amplitude = new Envelope((List)params['envelope']) 48 | Ic = (float)params['Ic'] 49 | ratio = ((int)params['N2']) / ((int)params['N1']) 50 | } 51 | 52 | void setFrequency(float f0) { 53 | if (!isFrequencySetted) { 54 | this.f0 = f0 55 | isFrequencySetted = true 56 | this.fc = (ratio != 0.0f) ? (float)(f0 * ratio) : 0.0f 57 | // TODO: new amplitude 58 | } 59 | } 60 | 61 | float process(int n, double t) { 62 | float _A = A 63 | if (amplitude != null) 64 | _A *= amplitude.tick() 65 | return fm(t, _A, f0, Ic, fc) 66 | } 67 | 68 | } 69 | -------------------------------------------------------------------------------- /mirsynth/src/main/groovy/io/github/mcolletta/mirsynth/resources/midi/Invention.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirsynth/src/main/groovy/io/github/mcolletta/mirsynth/resources/midi/Invention.mid -------------------------------------------------------------------------------- /mirtext/.gitignore: -------------------------------------------------------------------------------- 1 | *.class 2 | Thumbs.db 3 | 4 | # Package Files # 5 | # *.jar 6 | *.war 7 | *.ear 8 | 9 | # Directories # 10 | .metadata 11 | .metadata* 12 | .recommenders 13 | .gradle 14 | bin 15 | build 16 | /doc 17 | 18 | 19 | # Eclipse settings (should be generated with Gradle import in Eclipse) 20 | .project 21 | .classpath 22 | .settings 23 | 24 | # IntelliJ IDEA settings (should be generated with Gradle import in Eclipse) 25 | .idea 26 | *.iml -------------------------------------------------------------------------------- /mirtext/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'groovy' 2 | apply plugin: 'application' 3 | 4 | 5 | dependencies { 6 | implementation project(':mirfoldertreeview') 7 | implementation project(':mirutils') 8 | } 9 | 10 | sourceSets { 11 | main { 12 | groovy { 13 | srcDirs = ['src/main/groovy'] 14 | } 15 | resources { 16 | srcDirs = ["src/main/groovy"] 17 | } 18 | } 19 | } 20 | 21 | jar { 22 | manifest.attributes 'Created-By': 'Mirco Colletta' 23 | } 24 | 25 | task runScript(type: JavaExec) { 26 | description 'Run Simple Demo' 27 | mainClass = 'io.github.mcolletta.mirtext.Demo' 28 | classpath = sourceSets.main.runtimeClasspath 29 | 30 | if (project.hasProperty('custom_arg')) { 31 | args project.getProperty('custom_arg') 32 | } 33 | } 34 | 35 | defaultTasks 'runScript' -------------------------------------------------------------------------------- /mirtext/src/main/groovy/io/github/mcolletta/mirtext/Demo.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2016-2017 Mirco Colletta 3 | * 4 | * This file is part of MirComp. 5 | * 6 | * MirComp 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 | * MirComp 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 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with MirComp. If not, see . 18 | */ 19 | 20 | /** 21 | * @author Mirco Colletta 22 | */ 23 | 24 | package io.github.mcolletta.mirtext 25 | 26 | import java.io.IOException 27 | import javafx.application.Application 28 | import javafx.scene.Scene 29 | import javafx.scene.layout.StackPane 30 | import javafx.stage.Stage 31 | 32 | 33 | public class Demo extends Application { 34 | 35 | @Override 36 | public void start(Stage stage) throws Exception { 37 | StackPane root = new StackPane() 38 | 39 | TextEditor editor = new TextEditor() 40 | 41 | root.getChildren().add(editor) 42 | 43 | Scene scene = new Scene(root, 1000, 700) 44 | 45 | stage.setScene(scene) 46 | stage.show() 47 | } 48 | 49 | public static void main(String[] args) throws IOException { 50 | Application.launch(Demo, args); 51 | } 52 | 53 | } 54 | -------------------------------------------------------------------------------- /mirtext/src/main/groovy/io/github/mcolletta/mirtext/Mode.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2016-2017 Mirco Colletta 3 | * 4 | * This file is part of MirComp. 5 | * 6 | * MirComp 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 | * MirComp 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 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with MirComp. If not, see . 18 | */ 19 | 20 | /** 21 | * @author Mirco Colletta 22 | */ 23 | 24 | package io.github.mcolletta.mirtext 25 | 26 | import groovy.transform.Canonical 27 | 28 | @Canonical 29 | class Mode { 30 | 31 | String name 32 | String path 33 | List extensions 34 | 35 | String toString() { 36 | return name 37 | } 38 | 39 | static final Mode ABC = new Mode("ABC", "ace/mode/abc", ["abc"]) 40 | static final Mode Clojure = new Mode("Clojure", "ace/mode/clojure", ["clj", "cljs"]) 41 | static final Mode CSS = new Mode("CSS", "ace/mode/css", ["css"]) 42 | static final Mode Dot = new Mode("Dot", "ace/mode/dot", ["dot"]) 43 | static final Mode Groovy = new Mode("Groovy", "ace/mode/groovy", ["groovy"]) 44 | static final Mode Java = new Mode("Java", "ace/mode/java", ["java"]) 45 | static final Mode JSP = new Mode("JSP", "ace/mode/jsp", ["jsp"]) 46 | static final Mode JSON = new Mode("JSON", "ace/mode/json", ["json"]) 47 | static final Mode LaTeX = new Mode("LaTeX", "ace/mode/latex", ["latex"]) 48 | static final Mode MirChord = new Mode("MirChord", "ace/mode/mirchord", ["mirchord"]) 49 | static final Mode Tex = new Mode("Tex", "ace/mode/tex", ["tex"]) 50 | static final Mode Text = new Mode("Text", "ace/mode/text", ["txt"]) 51 | static final Mode XML = new Mode("XML", "ace/mode/xml", ["xml", "mxml"]) 52 | 53 | 54 | static final Mode[] AVAILABLE_MODES = [ Groovy, MirChord, Text, XML, JSP ] 55 | 56 | } -------------------------------------------------------------------------------- /mirtext/src/main/groovy/io/github/mcolletta/mirtext/resources/ace/third-party/ext-error_marker.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/ext/error_marker"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /mirtext/src/main/groovy/io/github/mcolletta/mirtext/resources/ace/third-party/ext-hardwrap.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/ext/hardwrap",["require","exports","module","ace/range","ace/editor","ace/config"],function(e,t,n){"use strict";function i(e,t){function m(e,t,n){if(e.lengthn)return{start:o.index,end:o.index+o[2].length};if(s&&s[2])return u=t+s[2].length,{start:u,end:u+s[3].length}}var n=t.column||e.getOption("printMarginColumn"),i=t.allowMerge!=0,s=Math.min(t.startRow,t.endRow),o=Math.max(t.startRow,t.endRow),u=e.session;while(s<=o){var a=u.getLine(s);if(a.length>n){var f=m(a,n,5);if(f){var l=/^\s*/.exec(a)[0];u.replace(new r(s,f.start,s,f.end),"\n"+l)}o++}else if(i&&/\S/.test(a)&&s!=o){var c=u.getLine(s+1);if(c&&/\S/.test(c)){var h=a.replace(/\s+$/,""),p=c.replace(/^\s+/,""),d=h+" "+p,f=m(d,n,5);if(f&&f.start>h.length||d.length. 18 | */ 19 | 20 | /** 21 | * @author Mirco Colletta 22 | */ 23 | 24 | package io.github.mcolletta.mirtextfx 25 | 26 | import java.io.IOException 27 | import javafx.application.Application 28 | import javafx.scene.Scene 29 | import javafx.scene.layout.StackPane 30 | import javafx.stage.Stage 31 | 32 | 33 | public class Demo extends Application { 34 | 35 | @Override 36 | public void start(Stage stage) throws Exception { 37 | StackPane root = new StackPane() 38 | 39 | var editor = new StackPane(new TextEditor(Mode.MirChord, null, false)) 40 | 41 | root.getChildren().add(editor) 42 | 43 | Scene scene = new Scene(root, 1000, 700) 44 | 45 | stage.setScene(scene) 46 | stage.show() 47 | } 48 | 49 | public static void main(String[] args) throws IOException { 50 | Application.launch(Demo, args); 51 | } 52 | 53 | } 54 | -------------------------------------------------------------------------------- /mirtextfx/src/main/groovy/io/github/mcolletta/mirtextfx/languages/Mode.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2016-2022 Mirco Colletta 3 | * 4 | * This file is part of MirComp. 5 | * 6 | * MirComp 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 | * MirComp 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 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with MirComp. If not, see . 18 | */ 19 | 20 | /** 21 | * @author Mirco Colletta 22 | */ 23 | 24 | package io.github.mcolletta.mirtextfx 25 | 26 | import groovy.transform.Canonical 27 | 28 | @Canonical 29 | class Mode { 30 | 31 | String name 32 | List extensions 33 | 34 | String toString() { 35 | return name 36 | } 37 | 38 | SyntaxHighlighter getHighlighter() { 39 | return null; 40 | } 41 | 42 | static final Mode Groovy = new GroovyMode("Groovy", ["groovy"]) 43 | static final Mode MirChord = new MirChordMode("MirChord", ["mirchord"]) 44 | 45 | 46 | static final Mode[] AVAILABLE_MODES = [ Groovy, MirChord ] 47 | 48 | } 49 | 50 | class GroovyMode extends Mode { 51 | 52 | GroovyMode(String name, List extensions) { 53 | this.name = name 54 | this.extensions = extensions 55 | } 56 | 57 | @Override 58 | SyntaxHighlighter getHighlighter() { 59 | return new GroovySyntaxHighlighter(); 60 | } 61 | } 62 | 63 | class MirChordMode extends Mode { 64 | 65 | MirChordMode(String name, List extensions) { 66 | this.name = name 67 | this.extensions = extensions 68 | } 69 | 70 | @Override 71 | SyntaxHighlighter getHighlighter() { 72 | return new MirChordSyntaxHighlighter(); 73 | } 74 | } -------------------------------------------------------------------------------- /mirtextfx/src/main/groovy/io/github/mcolletta/mirtextfx/languages/SyntaxHighlighter.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2016-2022 Mirco Colletta 3 | * 4 | * This file is part of MirComp. 5 | * 6 | * MirComp 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 | * MirComp 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 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with MirComp. If not, see . 18 | */ 19 | 20 | /** 21 | * @author Mirco Colletta 22 | */ 23 | 24 | package io.github.mcolletta.mirtextfx 25 | 26 | import java.util.regex.Pattern; 27 | import javafx.collections.transformation.FilteredList; 28 | import org.fxmisc.richtext.CodeArea; 29 | 30 | import groovy.transform.EqualsAndHashCode 31 | 32 | 33 | public interface SyntaxHighlighter { 34 | 35 | public FilteredList getSnippets(); 36 | 37 | public void updateSnippets(String filter); 38 | 39 | public void highlight(CodeArea codeArea, int position, String inserted, String removed); 40 | 41 | public void comment(CodeArea codeArea); 42 | 43 | } 44 | 45 | 46 | @EqualsAndHashCode 47 | public class Snippet { 48 | String id; 49 | String snippet; 50 | String suggestion; 51 | 52 | Snippet(String id, String snippet, String suggestion) { 53 | this.id = id; 54 | this.snippet = snippet; 55 | this.suggestion = suggestion; 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /mirtextfx/src/main/groovy/io/github/mcolletta/mirtextfx/languages/Theme.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2016-2022 Mirco Colletta 3 | * 4 | * This file is part of MirComp. 5 | * 6 | * MirComp 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 | * MirComp 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 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with MirComp. If not, see . 18 | */ 19 | 20 | /** 21 | * @author Mirco Colletta 22 | */ 23 | 24 | package io.github.mcolletta.mirtextfx 25 | 26 | import groovy.transform.Canonical 27 | 28 | @Canonical 29 | class Theme { 30 | 31 | String name 32 | String path 33 | 34 | String toString() { 35 | return name 36 | } 37 | 38 | static final Theme Monokai = new Theme("Monokai", "monokai") 39 | 40 | static final Theme Bright = new Theme("Bright", "bright") 41 | 42 | 43 | static final Theme[] AVAILABLE_THEMES = [ 44 | Monokai, Bright 45 | ] 46 | 47 | } -------------------------------------------------------------------------------- /mirtextfx/src/main/groovy/io/github/mcolletta/mirtextfx/resources/icons/colorize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirtextfx/src/main/groovy/io/github/mcolletta/mirtextfx/resources/icons/colorize.png -------------------------------------------------------------------------------- /mirtextfx/src/main/groovy/io/github/mcolletta/mirtextfx/resources/icons/comment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirtextfx/src/main/groovy/io/github/mcolletta/mirtextfx/resources/icons/comment.png -------------------------------------------------------------------------------- /mirtextfx/src/main/groovy/io/github/mcolletta/mirtextfx/resources/icons/editclear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirtextfx/src/main/groovy/io/github/mcolletta/mirtextfx/resources/icons/editclear.png -------------------------------------------------------------------------------- /mirtextfx/src/main/groovy/io/github/mcolletta/mirtextfx/resources/icons/editcopy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirtextfx/src/main/groovy/io/github/mcolletta/mirtextfx/resources/icons/editcopy.png -------------------------------------------------------------------------------- /mirtextfx/src/main/groovy/io/github/mcolletta/mirtextfx/resources/icons/editcut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirtextfx/src/main/groovy/io/github/mcolletta/mirtextfx/resources/icons/editcut.png -------------------------------------------------------------------------------- /mirtextfx/src/main/groovy/io/github/mcolletta/mirtextfx/resources/icons/editpaste.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirtextfx/src/main/groovy/io/github/mcolletta/mirtextfx/resources/icons/editpaste.png -------------------------------------------------------------------------------- /mirtextfx/src/main/groovy/io/github/mcolletta/mirtextfx/resources/icons/filefind.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirtextfx/src/main/groovy/io/github/mcolletta/mirtextfx/resources/icons/filefind.png -------------------------------------------------------------------------------- /mirtextfx/src/main/groovy/io/github/mcolletta/mirtextfx/resources/icons/fileopen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirtextfx/src/main/groovy/io/github/mcolletta/mirtextfx/resources/icons/fileopen.png -------------------------------------------------------------------------------- /mirtextfx/src/main/groovy/io/github/mcolletta/mirtextfx/resources/icons/filesave.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirtextfx/src/main/groovy/io/github/mcolletta/mirtextfx/resources/icons/filesave.png -------------------------------------------------------------------------------- /mirtextfx/src/main/groovy/io/github/mcolletta/mirtextfx/resources/icons/filesaveas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirtextfx/src/main/groovy/io/github/mcolletta/mirtextfx/resources/icons/filesaveas.png -------------------------------------------------------------------------------- /mirtextfx/src/main/groovy/io/github/mcolletta/mirtextfx/resources/icons/find.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirtextfx/src/main/groovy/io/github/mcolletta/mirtextfx/resources/icons/find.png -------------------------------------------------------------------------------- /mirtextfx/src/main/groovy/io/github/mcolletta/mirtextfx/resources/icons/fonts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirtextfx/src/main/groovy/io/github/mcolletta/mirtextfx/resources/icons/fonts.png -------------------------------------------------------------------------------- /mirtextfx/src/main/groovy/io/github/mcolletta/mirtextfx/resources/icons/fontsizedown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirtextfx/src/main/groovy/io/github/mcolletta/mirtextfx/resources/icons/fontsizedown.png -------------------------------------------------------------------------------- /mirtextfx/src/main/groovy/io/github/mcolletta/mirtextfx/resources/icons/fontsizeup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirtextfx/src/main/groovy/io/github/mcolletta/mirtextfx/resources/icons/fontsizeup.png -------------------------------------------------------------------------------- /mirtextfx/src/main/groovy/io/github/mcolletta/mirtextfx/resources/icons/gear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirtextfx/src/main/groovy/io/github/mcolletta/mirtextfx/resources/icons/gear.png -------------------------------------------------------------------------------- /mirtextfx/src/main/groovy/io/github/mcolletta/mirtextfx/resources/icons/redo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirtextfx/src/main/groovy/io/github/mcolletta/mirtextfx/resources/icons/redo.png -------------------------------------------------------------------------------- /mirtextfx/src/main/groovy/io/github/mcolletta/mirtextfx/resources/icons/reload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirtextfx/src/main/groovy/io/github/mcolletta/mirtextfx/resources/icons/reload.png -------------------------------------------------------------------------------- /mirtextfx/src/main/groovy/io/github/mcolletta/mirtextfx/resources/icons/sc_reload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirtextfx/src/main/groovy/io/github/mcolletta/mirtextfx/resources/icons/sc_reload.png -------------------------------------------------------------------------------- /mirtextfx/src/main/groovy/io/github/mcolletta/mirtextfx/resources/icons/sc_save.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirtextfx/src/main/groovy/io/github/mcolletta/mirtextfx/resources/icons/sc_save.png -------------------------------------------------------------------------------- /mirtextfx/src/main/groovy/io/github/mcolletta/mirtextfx/resources/icons/sc_saveas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirtextfx/src/main/groovy/io/github/mcolletta/mirtextfx/resources/icons/sc_saveas.png -------------------------------------------------------------------------------- /mirtextfx/src/main/groovy/io/github/mcolletta/mirtextfx/resources/icons/templates.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirtextfx/src/main/groovy/io/github/mcolletta/mirtextfx/resources/icons/templates.png -------------------------------------------------------------------------------- /mirtextfx/src/main/groovy/io/github/mcolletta/mirtextfx/resources/icons/undo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/mirtextfx/src/main/groovy/io/github/mcolletta/mirtextfx/resources/icons/undo.png -------------------------------------------------------------------------------- /mirutils/build.gradle: -------------------------------------------------------------------------------- 1 | plugins { 2 | id 'groovy' 3 | id 'application' 4 | } 5 | 6 | application { 7 | mainClass = 'io.github.mcolletta.mirutils' 8 | } 9 | 10 | 11 | dependencies { 12 | implementation fileTree(dir: '../libs', include: ['*.jar']) 13 | } 14 | 15 | sourceSets { 16 | main { 17 | groovy { 18 | srcDirs = ['src/main/groovy'] 19 | } 20 | resources { 21 | srcDir 'resources' 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /mirutils/src/main/groovy/io/github/mcolletta/mirutils/TabContent.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2016-2021 Mirco Colletta 3 | * 4 | * This file is part of MirComp. 5 | * 6 | * MirComp 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 | * MirComp 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 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with MirComp. If not, see . 18 | */ 19 | 20 | /** 21 | * @author Mirco Colletta 22 | */ 23 | 24 | package io.github.mcolletta.mirutils 25 | 26 | import java.nio.file.Path 27 | 28 | 29 | public interface TabContent { 30 | 31 | default String getTabType() { return "TabContent"; } 32 | 33 | default boolean isClean() { return true; } 34 | 35 | default Path getFilePath() { return null; } 36 | 37 | default void setFilePath(Path path) { } 38 | 39 | default void close() { } 40 | } 41 | 42 | -------------------------------------------------------------------------------- /resources/MC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/resources/MC -------------------------------------------------------------------------------- /resources/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/resources/icon.png -------------------------------------------------------------------------------- /resources/images/Screenshot1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/resources/images/Screenshot1.png -------------------------------------------------------------------------------- /resources/images/Screenshot2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/resources/images/Screenshot2.png -------------------------------------------------------------------------------- /resources/images/Screenshot3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/resources/images/Screenshot3.png -------------------------------------------------------------------------------- /resources/images/ScreenshotDemoApp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcolletta/mircomp/0be2b30947676fcb317c23773b774a0e819da045/resources/images/ScreenshotDemoApp.png -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include ":mirchord" 2 | include ":mirconverter" 3 | include ":mirtext" 4 | include ":mirtextfx" 5 | include ":mirscore" 6 | include ":mirmidi" 7 | include ":mirfoldertreeview" 8 | include ":miride" 9 | include ":mircomposer" 10 | include ":mirsynth" 11 | include ":mirutils" 12 | include ":mircoracle" 13 | include ":mirgene" 14 | project(':mirchord').projectDir = new File('mirchord') 15 | project(':mirconverter').projectDir = new File('mirconverter') 16 | project(':mirtext').projectDir = new File('mirtext') 17 | project(':mirtextfx').projectDir = new File('mirtextfx') 18 | project(':mirscore').projectDir = new File('mirscore') 19 | project(':mirmidi').projectDir = new File('mirmidi') 20 | project(':mirfoldertreeview').projectDir = new File('mirfoldertreeview') 21 | project(':miride').projectDir = new File('miride') 22 | project(':mircomposer').projectDir = new File('mircomposer') 23 | project(':mirsynth').projectDir = new File('mirsynth') 24 | project(':mirutils').projectDir = new File('mirutils') 25 | project(':mircoracle').projectDir = new File('mircoracle') 26 | project(':mirgene').projectDir = new File('mirgene') 27 | -------------------------------------------------------------------------------- /tools/buildsite/site/content/documentation.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 |

Documentation

5 |

6 |
7 | 8 |
9 |
10 | Download 11 |
12 |
Get the latest release of MirComp.
13 | 14 |
15 | Getting Started 16 |
17 |
Learn how to setup MirComp with instruction on how to install the IDE and create your first music project.
18 | 19 |
20 | MirChord 21 |
22 |
An overview of the MirChord notation language and a reference to the most common elements, symbols and commands. Learn how to write an entire multipart and multivoice score.
23 | 24 |
25 | Extending MirChord 26 |
27 |
A short guide to extend the notation functionality with music "logic".
28 | 29 |
30 | Framework 31 |
32 |
An introduction to the MirChord framework and an API reference to common components useful for algorithmic music. Learn how to build your score algorithmically.
33 | 34 |
35 | MirMidi 36 |
37 |
An introduction to the MIDI sequencer.
38 | 39 |
40 | MirScore 41 |
42 |
An introduction to the Score Viewer.
43 | 44 |
45 | Sampled sounds 46 |
47 |
Discover how to select high quality soundfonts for your music project.
48 | 49 |
50 | 51 |
-------------------------------------------------------------------------------- /tools/buildsite/site/content/mirscore.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 |

MirScore

5 |

6 | An introduction to the Score Viewer. 7 |

8 |
9 | 10 | 11 | 14 | 15 |

16 | The Score Viewer is used for the graphical preview of scores.
17 | There are three main modes for the application. In Pan mode the user can move inside the score by dragging the mouse. The Select mode allows the composer to set the playback position by clicking on a staff. During the MIDI Playback a graphical score element that represents the current position is updated.
18 | The component supports pagination and zooming as well (during the playback they are adjusted to show the current portion of the score being executed). 19 |

20 | 21 | MirMIDI 22 | 23 | MirMIDI 24 | 25 |
-------------------------------------------------------------------------------- /tools/buildsite/site/content/soundfonts.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 |

Sampled sounds

5 |

6 | Discover how to select high quality soundfonts for your music project. 7 |

8 |
9 | 10 |

11 | The Java Virtual Machine by default uses a low quality "emergency" soundbank to play midi sequence.
12 | To improve the quality of the compositions it is highly advised to load some high quality sample sounds in the form of a SoundFonts .sf2 file.
13 | In the SoundFonts | MuseScore page you can find a list of interesting soundfons and the links to download them. 14 |

15 | 16 | 19 | 20 |

21 | It is very simple.
22 | First you must download a sf2 file and save it in a location of your choice in the filesystem.
23 | To load this file into the project open the properties dialog from the IDE and choose as Soundbank path the file previously saved.
24 | Press Apply and Reload. 25 |

26 | 27 | 28 | 29 |

30 | You can now enjoy the new sampled sounds. 31 |

32 | 33 |
-------------------------------------------------------------------------------- /tools/buildsite/sitegen.groovy: -------------------------------------------------------------------------------- 1 | 2 | import java.nio.file.attribute.* 3 | import java.nio.file.* 4 | import groovy.lang.Binding 5 | import groovy.text.GStringTemplateEngine 6 | 7 | 8 | def f = new File('./site/site.template') 9 | def engine = new GStringTemplateEngine() 10 | def template = engine.createTemplate(f) 11 | //println template.toString() 12 | 13 | List roots = [] 14 | Path start = Paths.get("./site/content") 15 | Files.walkFileTree(start, new SimpleFileVisitor() { 16 | @Override 17 | public FileVisitResult visitFile(Path path, BasicFileAttributes attrs) 18 | throws IOException 19 | { 20 | roots << path 21 | println path 22 | if (!Files.isDirectory(path)) { 23 | createPage(path, template) 24 | } 25 | return FileVisitResult.CONTINUE 26 | } 27 | }) 28 | 29 | void createPage(path, template) { 30 | def content = path.toFile().getText() 31 | def binding = [content:content, path:path] 32 | def page = template.make(binding) 33 | //println page 34 | def fout = new File('./site/output/' + path.getFileName()) 35 | fout.setText(page.toString()) 36 | //fout << page 37 | } 38 | --------------------------------------------------------------------------------