Java & MIDI Development (Music Creator)

MIDI Specs Messages 

MidiSystem
Totorial  FullExample   Play Note Sample MidiSystem Tutorial readMIDI1   
Old Sample   MIDI File Formats MIDIRead/Write  StandardMIDIFile  
There are 3 different "Types" (sometimes called "Formats") of MIDI files. 
A Type 0 file contains only one track, and all of the MIDI messages (ie, the entire performance) are placed in that one track, 
    even if this represents many musical parts upon different MIDI channels.
A Type 1 file separates each musical part upon its own track The data is split to tracks based upon the channel data.
A Type 2 file, which is extremely rare, is akin to a collection of Type 0 files all crammed into one MIDI file. 
Type 2 is used to store a collection of songs or patterns, for example, numerous drum beats.
Writing MIDI   write(seq,1,File) FileTypesList 
MIDI Notes  0=C Octave-1  24=C0/Octave0 36=C1/Octave1 48=C2/Octave2   108=C7/Octave7 
  
Arpeggio  GuitarArp GuitarChords 
MIDI Pan via CC10 Controler?   PianoKeys 
MIDI Device   MIDI Programming 
channel = synthesizer.getChannels()[9];
...
channel.controlChange (10,0); // pan left
channel.noteOn (35, 64);
channel.controlChange (10,127); // pan right
channel.noteOn (36, 64);

 

JFuge Examples 
Software: MIDITools    MidiEditor MidiEditor-3.0.0-Setup.exe  ArpegeMusic VirtualMIDI  MacPatch VSTFree 
Melody: CreateEtc  

Hierarchy:
Sequence  Sequence 
Track
Events: Events with time Tick 
MIDI Instruments GS-List(MIDI_Intr.txt)  BankSelect(CC32)   Bank Bank2 MIDI Cmd    
Synthesizer: A device for generating sound. It's the only object in the javax.sound.midi package that produces audio data
MIDIDevice detection JavaGervill   
JavaSample1  
MIDIEvent
ShortMessage  MetaMessage Types MetaProcess MIDI Commands Cmd2 

Time Stamps(Ticks)
tick = time stamp + PPQ = Pulses/Ticks per quarter note/beats (24)  "Beat" = "Quarter Note" TmeProblems 
PPQ is 480 (standard in most MIDI sequencing software)   
Resolution(Export): 480=480perBeat 100=100perBeat   
Play MIDI needs SoundFonts:List 
Play VLC Import sf3: All/Inpuit/Codes/Fluid  (C:\Program Files (x86)\MuseScore 2\sound\MuseScore_General.sf3) 
Composing (MuseScore)
Wiki   MuseScore PDF  Tut1 Tut2 40Min Articulate Ctrl+Zoom N=Note Chords:Alt+3(Alt+3 Above,Shift+3 below) Courses  
Chords:  MajorTriad=0+4+7(CEG)  Cmaj6/C6=0+4+7+9(CEGA) 
Chord Progression:   
BackBWV846(CMajor): C/E(Right) G/C+/E+(Left)     
HollywoodMusic
MajorTriad(+4+3) MinorTriad(+3+4) M5m=Maj+5Min 
      
Algo Composing  AlgorithmicComposer  OpenMusic  KymaSoundDesign$$$  
MIDI Velocity
 
VirtualMIDI 
Run "C:\Music\Setup\MIDI\MIDIVirtual.bat (java -jar MIDIVirtual.jar)" from UtilMIDI.java - runChannel()
C:\Music\Setup\MIDI>java -jar MIDIVirtual.jar
Virtual Channel Ready (Version 1.2a) (MIDIVirtual)
Starting message Loop on Port: MIDIVirtual
Listening for Events on Port 58001
Cmd >


create a new virtual MIDI Channel "MIDIVirtual" (UtilMIDI.MIDI_VIRT_NAME)
Send/receive MIDI Events in the new [temporary] MIDI Port using VirtualKeys
Now start Cubase which will pick up the NEW Virtual MIDI Port
Send notes to MODO Bass - and avoid feedback in Cubase MIDI Out:
 

-OR- Java TeVirtualMIDITest.setPortName("MIDIMVirtual") 
Open "C:\Music\Setup\MIDI\loopMIDI.exe"
   also - "LoopMIDI"(C:\Program Files (x86)\Tobias Erichsen\loopMIDI\loopMIDI_X.exe)   

Example: ON: 903063(NoteON,30=48/C2 63=99Velocity)  OFF: 803000(NoteOFF,30=48/C2 00=0Velocity)    
 
C:\Program Files (x86)\Tobias Erichsen  C:\Windwos\System\teVirtualMIDI32.dll rtpManual 
ERROR: An old/incompatible version of loopMIDI was detected - Remove old "LoopMIDI" - Tobis Eriskon (CtrlPannel) 
MIDI on Windows 
 
 
 
 
 
 
 
How to Play External Instruments Inside Your DAW VirualMIDI  Virtual MIDI SDK (Java) SimplePiano 1.17 (MIDI)