From 2af51efe0d16cfd1a61b7d87ff504d5af3005dfa Mon Sep 17 00:00:00 2001 From: MasterGordon Date: Sat, 26 Jan 2019 22:30:50 +0100 Subject: [PATCH] Init --- .classpath | 6 ++ .project | 17 +++++ .settings/org.eclipse.jdt.core.prefs | 11 ++++ bin/technomaker/BeatMaker.class | Bin 0 -> 2363 bytes bin/technomaker/Main.class | Bin 0 -> 930 bytes bin/technomaker/MelodyMaker.class | Bin 0 -> 2469 bytes bin/technomaker/TechnoMaker.class | Bin 0 -> 1358 bytes src/technomaker/BeatMaker.java | 91 ++++++++++++++++++++++++++ src/technomaker/Main.java | 16 +++++ src/technomaker/MelodyMaker.java | 92 +++++++++++++++++++++++++++ src/technomaker/TechnoMaker.java | 36 +++++++++++ test1 | Bin 0 -> 480 bytes test1.mid | Bin 0 -> 4548 bytes 13 files changed, 269 insertions(+) create mode 100644 .classpath create mode 100644 .project create mode 100644 .settings/org.eclipse.jdt.core.prefs create mode 100644 bin/technomaker/BeatMaker.class create mode 100644 bin/technomaker/Main.class create mode 100644 bin/technomaker/MelodyMaker.class create mode 100644 bin/technomaker/TechnoMaker.class create mode 100644 src/technomaker/BeatMaker.java create mode 100644 src/technomaker/Main.java create mode 100644 src/technomaker/MelodyMaker.java create mode 100644 src/technomaker/TechnoMaker.java create mode 100644 test1 create mode 100644 test1.mid diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..e461bea --- /dev/null +++ b/.classpath @@ -0,0 +1,6 @@ + + + + + + diff --git a/.project b/.project new file mode 100644 index 0000000..cd392b4 --- /dev/null +++ b/.project @@ -0,0 +1,17 @@ + + + TenchnoMaker + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..bb35fa0 --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,11 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/bin/technomaker/BeatMaker.class b/bin/technomaker/BeatMaker.class new file mode 100644 index 0000000000000000000000000000000000000000..a066816dc48272583c0114100c0093e6f1eba7a0 GIT binary patch literal 2363 zcmbVMU2Icj7=FI?w5Kfv&c$7u$QAUi$#I0s}Q=GQ}J^;5(3dCqKtIRoB=9Oah~U3x@yn50h|1vTv02uZ1?`p_T7QP5F= zl5_^II+7OEV)2PV_3d~VPhgNEEla!POu0r#>lj{9ps8x@o(Lffsp5xlQWgKC(j=Xx zCLyYPDvYO;r`DFFEo(H#aBZf-r0Yj5TaL|CCS@&aPL`!W>u9xLmUCv!QqM~-HD}5q zx_xxTgQrf=q=09FMSJQM3ejx1@%x-ayr;rc(Pr4PQCtj1?cHPe=dpDWJMw#j3)q#^xB;KjJgaMEs1{uOcG8RYMlhmv4P+0f&=%#OIIb^GK=7vHyu2VzQBB zAQEW7N5;$Ed7N-_1e$X^fSg+$$+@IIb_Y1hYmFNXSkD0(99s*2Z8*qXo5Cgxq8%CT z)U)WodEzdj6Arp?4O{U#w&QJXvv;r)A7U47VmH3zy1I>Se2X6Z$j$UC61anX!h`){ z9S(@i=o3*KA}8>CLnMshG@mG!E3aVgU+^@}P}UTFz%v-9{26?WES_bJ=kYmmtjEV% zuH!l4{H$OOd7R@Kzs<-AG6xvV{zMi3Ku!d3R*+M4P&egbb8 rJxwLsgpLaDysY7OS7nV=eCPVY2b&yg;JJ%-A;h2fi=kD%^5D`x0A?Kk literal 0 HcmV?d00001 diff --git a/bin/technomaker/Main.class b/bin/technomaker/Main.class new file mode 100644 index 0000000000000000000000000000000000000000..66395bfa1cd6a0fa1d1e8d06db7ea8df1637f9a2 GIT binary patch literal 930 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 literal 0 HcmV?d00001 diff --git a/src/technomaker/BeatMaker.java b/src/technomaker/BeatMaker.java new file mode 100644 index 0000000..41dc540 --- /dev/null +++ b/src/technomaker/BeatMaker.java @@ -0,0 +1,91 @@ +package technomaker; + +import javax.sound.midi.InvalidMidiDataException; +import javax.sound.midi.MetaMessage; +import javax.sound.midi.MidiEvent; +import javax.sound.midi.Sequence; +import javax.sound.midi.ShortMessage; +import javax.sound.midi.SysexMessage; +import javax.sound.midi.Track; + +public class BeatMaker { + Sequence s; + Track t; + + public BeatMaker(Sequence s) throws InvalidMidiDataException { + this.s = s; + t = s.createTrack(); + + // **** General MIDI sysex -- turn on General MIDI sound set **** + byte[] b = { (byte) 0xF0, 0x7E, 0x7F, 0x09, 0x01, (byte) 0xF7 }; + SysexMessage sm = new SysexMessage(); + sm.setMessage(b, 6); + MidiEvent me = new MidiEvent(sm, (long) 0); + t.add(me); + + // **** set tempo (meta event) **** + MetaMessage mt = new MetaMessage(); + byte[] bt = { 0x10, (byte) 0x00, 0x00 }; + mt.setMessage(0x51, bt, 3); + me = new MidiEvent(mt, (long) 0); + t.add(me); + + // **** set track name (meta event) **** + mt = new MetaMessage(); + String TrackName = new String("midifile track"); + mt.setMessage(0x03, TrackName.getBytes(), TrackName.length()); + me = new MidiEvent(mt, (long) 0); + t.add(me); + + // **** set omni on **** + ShortMessage mm = new ShortMessage(); + mm.setMessage(ShortMessage.CONTROL_CHANGE, 0x7D, 0x00); + me = new MidiEvent(mm, (long) 0); + t.add(me); + + // **** set poly on **** + mm = new ShortMessage(); + mm.setMessage(ShortMessage.CONTROL_CHANGE, 0x7F, 0x00); + me = new MidiEvent(mm, (long) 0); + t.add(me); + + generateDrums(); + } + + private void generateDrums() throws InvalidMidiDataException { + + int b1 = (int) (Math.random() * 3); + int b2 = (int) (Math.random() * 3); + + for (int i = 0; i < 100; i++) { + // **** set instrument to Piano **** + ShortMessage mm = new ShortMessage(); + mm.setMessage(ShortMessage.PROGRAM_CHANGE, 1, 118, 0x00); + MidiEvent me = new MidiEvent(mm, (long) 0); + t.add(me); + + // **** note on - middle C **** + mm = new ShortMessage(); + mm.setMessage(ShortMessage.NOTE_ON, 1, 20, 127); + me = new MidiEvent(mm, (long) i * 4 + b1); + t.add(me); + // **** note off - middle C - 120 ticks later **** + mm = new ShortMessage(); + mm.setMessage(ShortMessage.NOTE_OFF, 1, 20, 127); + me = new MidiEvent(mm, (long) i * 4 + b1); + t.add(me); + + // **** note on - middle C **** + mm = new ShortMessage(); + mm.setMessage(ShortMessage.NOTE_ON, 1, 20, 127); + me = new MidiEvent(mm, (long) i * 4 + b2); + t.add(me); + // **** note off - middle C - 120 ticks later **** + mm = new ShortMessage(); + mm.setMessage(ShortMessage.NOTE_OFF, 1, 20, 127); + me = new MidiEvent(mm, (long) i * 4 + b2); + t.add(me); + + } + } +} diff --git a/src/technomaker/Main.java b/src/technomaker/Main.java new file mode 100644 index 0000000..044528d --- /dev/null +++ b/src/technomaker/Main.java @@ -0,0 +1,16 @@ +package technomaker; + +public class Main { + + public static void main(String[] args) { + new TechnoMaker().save("test1.mid"); + try { + Process p = Runtime.getRuntime().exec("\"C:\\Program Files\\VideoLAN\\VLC\\vlc.exe\" D:\\spigotworkspace\\TenchnoMaker\\test1.mid"); + Thread.sleep(41*1000); + p = Runtime.getRuntime().exec("taskkill /IM \"vlc.exe\" /F"); + } catch (Exception e) { + + } + } + +} diff --git a/src/technomaker/MelodyMaker.java b/src/technomaker/MelodyMaker.java new file mode 100644 index 0000000..2f6e384 --- /dev/null +++ b/src/technomaker/MelodyMaker.java @@ -0,0 +1,92 @@ +package technomaker; + +import javax.sound.midi.InvalidMidiDataException; +import javax.sound.midi.MetaMessage; +import javax.sound.midi.MidiEvent; +import javax.sound.midi.Sequence; +import javax.sound.midi.ShortMessage; +import javax.sound.midi.SysexMessage; +import javax.sound.midi.Track; + +public class MelodyMaker { + + Sequence s; + Track t; + + public MelodyMaker(Sequence s) throws Exception { + this.s = s; + t = s.createTrack(); + + // **** General MIDI sysex -- turn on General MIDI sound set **** + byte[] b = { (byte) 0xF0, 0x7E, 0x7F, 0x09, 0x01, (byte) 0xF7 }; + SysexMessage sm = new SysexMessage(); + sm.setMessage(b, 6); + MidiEvent me = new MidiEvent(sm, (long) 0); + t.add(me); + + // **** set tempo (meta event) **** + MetaMessage mt = new MetaMessage(); + byte[] bt = { 0x10, (byte) 0x00, 0x00 }; + mt.setMessage(0x51, bt, 3); + me = new MidiEvent(mt, (long) 0); + t.add(me); + + // **** set track name (meta event) **** + mt = new MetaMessage(); + String TrackName = new String("midifile track"); + mt.setMessage(0x03, TrackName.getBytes(), TrackName.length()); + me = new MidiEvent(mt, (long) 0); + t.add(me); + + // **** set omni on **** + ShortMessage mm = new ShortMessage(); + mm.setMessage(ShortMessage.CONTROL_CHANGE, 0x7D, 0x00); + me = new MidiEvent(mm, (long) 0); + t.add(me); + + // **** set poly on **** + mm = new ShortMessage(); + mm.setMessage(ShortMessage.CONTROL_CHANGE, 0x7F, 0x00); + me = new MidiEvent(mm, (long) 0); + t.add(me); + + generateMelody(); + } + + private void generateMelody() throws Exception { + for (int i = 0; i < 10; i++) + addStrophe(40 * i); + } + + private void addStrophe(int offset) throws Exception { + + int variation = 1 + (int) (Math.random() * 6); + + int ton = 60; + for (int i = 0; i < 40;) { + + i += 1 + Math.pow(Math.random() * 3, 2) * 0.3; + + ton += (int) (Math.random() * (variation * 2 + 1)) - variation; + + // **** set instrument to Piano **** + ShortMessage mm = new ShortMessage(); + mm.setMessage(ShortMessage.PROGRAM_CHANGE, (int) (Math.random()*100), 0x00); + MidiEvent me = new MidiEvent(mm, (long) 0 + offset); + t.add(me); + + // **** note on - middle C **** + mm = new ShortMessage(); + mm.setMessage(ShortMessage.NOTE_ON, ton, 127); + me = new MidiEvent(mm, (long) i + offset); + t.add(me); + // **** note off - middle C - 120 ticks later **** + mm = new ShortMessage(); + mm.setMessage(ShortMessage.NOTE_OFF, ton, 127); + me = new MidiEvent(mm, (long) 1 + i + offset); + t.add(me); + + } + } + +} diff --git a/src/technomaker/TechnoMaker.java b/src/technomaker/TechnoMaker.java new file mode 100644 index 0000000..2679601 --- /dev/null +++ b/src/technomaker/TechnoMaker.java @@ -0,0 +1,36 @@ +package technomaker; + +import java.io.File; +import java.io.IOException; + +import javax.sound.midi.MidiSystem; +import javax.sound.midi.Sequence; +import javax.sound.midi.Track; + +public class TechnoMaker { + + Sequence s; + BeatMaker bm; + MelodyMaker mm; + + public TechnoMaker() { + try { + s = new Sequence(Sequence.PPQ, 4); + Track t = s.createTrack(); + mm = new MelodyMaker(s); + bm = new BeatMaker(s); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public void save(String filename) { + File f = new File(filename); + try { + MidiSystem.write(s, 1, f); + } catch (IOException e) { + e.printStackTrace(); + } + } + +} diff --git a/test1 b/test1 new file mode 100644 index 0000000000000000000000000000000000000000..fd70f4c18141e7afc93f3f4a13541a80ffd4a885 GIT binary patch literal 480 zcmeYb$w*;fU|?flWME=o@eL`;2J%=K{_8V9*o^xaKCsr+b25Hs_#ep31eE;G%$J*) vl9`s7ld4csl$e~&u%VWLp`L-^Kt00*kpvJ$MabA7!T>UMlqMq_fUyVwDQIa@ literal 0 HcmV?d00001 diff --git a/test1.mid b/test1.mid new file mode 100644 index 0000000000000000000000000000000000000000..8d509912e5c9f3a323b684271603c6285f0df403 GIT binary patch literal 4548 zcmeI0-%=b^5XQe5K!l`_ii;75nuIb{VFL?n0s>)y0O9XyLN+ncN+bp?spw70@=jOZ zV0;rFVSOX-yu{z^nQtb$x$#=5t)ZvS^z`Ze`s+SZ)EnO&OL|L@demEQyn2b&tJ8|Y z{ot|w>ieZR5dE#w`#r-vJnb3!;pF(_+mr9Vx%}g+=PzFBkDsNc)Vj}$TY9KbEvmu& zuqO0Whk8#HUDO!Qq>`4kuN8f+5nYRtEjQ2DDm z(h><*srx+F3rJrl`KP+1&q)7}2IvEphQoJQu3?muIgq_*hCup)>?XaN!RfduI;CZh!E!HAZ(2>s?)=>n|_^D%|y?4RoJOBUw?9MTI6Gy4=!m2RBPR6`zlS@7X%b~sk zo^^P0g_)90mT}-L>mDPv%&cj^xp|uGGAw%nsO1PZN+WEGq5&Md32)t1bc0#9G@Go4 z_u_1Xx^cSM<%TOpeYc-Zf1X($!QK8+)~Yq6em&E3PMS&=wDWJ4vRj7dIJ3+DMNB76n-E25~Nza~N@qx`F3hdS&K$1ZX= zuWX!EI?mQpU9Blbh_G4I0eD4?ZIQuv&{A4xHzcu^k|Mj=#pFipMQd7Ti kS+evW`1LxSOrGhTWj@2>43F2_{)`W2eE2`}A^lIyKLBjkLjV8( literal 0 HcmV?d00001