Version 0.1 of Apollo is free-ware. This version is written entirely in the program language 'C'. It will multitask, but this is not recommended. This demo version does not support other midicodes than key on/off's, program changes, wheels and pedals. The capacity of each track is fixed at about 800 events ! Warning: this demo was written in less than three days, so don't think it's bugfree. Apollo MIDI Multitrack Recorder V0.1 TestVersion by Trihedral Systems Program by Jeroen K Sparla & Bertho A Stultiens ONLY A TESTENVIRONMENT FOR INTERNAL USE SYSTEM-EXCLUSIVES ARE CURRENTLY NOT SUPPORTED Implemented commands are : S -> Start play/record Starts the multitrack recorder. Each track recieves all the midi channels. Only one track at a time can be in record mode. ( if you need a copy of that track, use the Copy function) F -> Stop play/record Stops the multitrack recorder. All-note-off events are transmitted on all 16 channels. T -> Change timerticks (tempo) Tempo influences the accuracy of the timing. The tempo value determines the number of ticks per second. V -> Change volume on track Add or substract a value to/from the velocity byte on all the channels on one track. X -> Transpose track Add or substract a value to/from the key byte on all the channels on one track. C -> Copy track D -> Set track delay Delays the track for x timerticks (so if your tempo == 250, a value of 250 will delay that track for 1 second) Z -> Zero track delay Track starts directly. H -> Hexdump tracks Displays the midi information. W -> Write tracks Writes the song to a device (binairy). L -> Load tracks Loads a song. N -> Clear track R -> Toggle Repeat track (looping) You will be able to loop a track. The last key on/off combination will be skipped, only the timing from the last event will be used. Q -> Displays helpscreen Warning: Don't use commands other than 'F' after a 'S' command. (they will work however.... but it's not nice). Use mouse to change track state record/play(loop)/off Move mousepointer over the keyword REC PLAY LOOP or OFF and press left button. Using the loop function, the last key recorded will not be played but indicates the time to wait before restarting the track * indicates non-empty track Use closegadget to quit This version of Apollo has been written for three reasons: 1) As a try-out for myself 2) As a demo for the Apollo project 3) It could be of any use to someone in this very universe After working with several MIDI recording studio's on different computers, i decided to write my own one for the Amiga computers. After writing the concept and layout of the Apollo program, i wrote some C-code which tested the serial-interface, a few devices and the multitrack approach. Apollo V0.1 is the result. It has limited functions, a very non-amiga user-interface and it's bad programmed; but now i know the kind of program i want to write can be done on an Amiga. Writing the concept (not the program...) has taken lots and lots of time (probably half a man-year), and i must say the concept is exquisite. All the things you ever wanted to do with MIDI are possible now! That is, could be possible. If i only had enough time to write this program all by my own. I am looking for people who want to help with programming: - the user interface - graphix design (screen design, layout, intro, gadgets...) - speedy low level routines for realtime displaying parameters, values & graphics without disturbing the midi in/out events. ( you know, the freaky things hackers do ! Over and over again i'm wondering how they manage that speedy graphics). - IFF save/load routines (there must be someone out there with a standard set of load/save routines...) - an AREXX interface (anybody who can help me on information/docs/ sources about this nice interface-language ?) All the basic routines will be written in 100% machine language, the rest of the program will be written in 'C'. Im most interested in people who can help with the speedy things like real-time displaying of VU-bars etc. Here is a short list of implemented features for Apollo V1.0 : *) means : works realtime too ! - Quantitize Humanfactor, Aritmethic *) and Musical - Transpose *) - Channel Filters *) - Tempo - Sequence = Clips = Tracks = Events - Loopings (nested, conditional) - Track delays - Channel delays - Fake/Ghost tracks - Copy Channel/Track - Delete Channel/Track - Merge Channels/Tracks (behind and thru) - Single step *) - Punch in/out *) - Volume change (absolute/relative) *) - Channel extract - Delimit *) - Echo back *) - Solo mode *) - SDL (Sequence Defenition Language) : make your own midi scripts ! - Use the Amiga internal DAC's as extra channels + sound-sampler and much much more...... So, if you're interested in helping, please contact : Jeroen K Sparla Ganzediepstraat 34 7523 PH Enschede The Netherlands Telephone: (0)53-337261 If you want the sourcelisting of V0.1 (can't imagine why....), you can contact the above address. Notice: this is freeware, no PD! By the way, i've no commercial intentions in mind in the first place. If we can manage to make a good product, we can always try to make it a commercial package. Since i'm a 'poor' student i can't pay you for the job. Thanx. If you plan to use the generated mididata in your own demo's/programs this is the structure of the generated binairy song-files : BINAIRY FORMAT SONGFILE: tt tt tt tt ; longword tempo l0 l0 l0 l0 ; longword length track 0 (# bytes) l1 l1 l1 l1 ; longword length track 1 (# bytes) : : lf lf lf lf ; longword length track 15 (# bytes) r0 ; byte repeat on/off track 0 (looping) r1 ; byte repeat on/off track 1 (looping) : : rf ; byte repeat on/off track 15 (looping) pp pp xx yy zz ; byte midi events of all 16 tracks pp pp = word timer value relative to previous event (# timerticks, relative to tempo) xx = midi opcode (key on/off, prog change etc.) yy = 1st midi operand (key value if xx==key on/off) zz = 2nd midi operand (key velocity if xx==key on/off) zz is always there, even if no 2nd parameter is needed. r? == 0 -> no looping, r? == 1 -> looping.