home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Audio Version 4.94
/
audioversion4.94knowledgemediaresourcelibraryoctober1994.iso
/
msdos
/
midi
/
qseq_10
/
qsq.txt
< prev
next >
Wrap
Text File
|
1994-02-14
|
57KB
|
1,283 lines
╔═════════════════════════════════════════╗
║ Q S Q : QUICK SEQUENCER v1.0 ║
║ ║
║ Copyright 1993-1994 by David HAUBENSACK ║
║ All Rights Reserved ║
╚═════════════════════════════════════════╝
┌────────────────────────────────────────────────────────┐
│Author, Copyright, Money, and all this kind of things...│
├───────────────────────────────────────────┬────────────┘
│PS: read it, it contains some informations.│
└───────────────────────────────────────────┘
Hi,
firstable let me tell you something. I am french. So don't be afraid by
some of the language mistakes you will probably find in this documentation.
Now forget about Shakespeare and Hemmingway or learn French and call me.
This piece of software was and is probably still developped by:
David HAUBENSACK
Sainte Catherine
84760 SAINT-MARTIN-DE-LA-BRASQUE
FRANCE
phone: (33)-90077413
email: hbsk@hostsit.cad.cea.fr .
As I will leave for another home in june 1994, after this date, send any letter
to the following address:
David HAUBENSACK
6, Allee du Maine
78570 ANDRESY
FRANCE
You cannot sell, copy or give the full version of this program, except to your
little sister if she is less than 3 years old, but I doubt she will thank you,
especially if you just have one brother and a cat. You cannot use it for a
commercial or private purpose unless you have an explicite licence for this.
The price of the licence for the full-featured version 1.0 is 300.00FF or
$60.00 . It's cheap, believe me. Yes, yes, believe me. If you cannot pay in
french francs or in dollars, use today's currency rates and convert 350.00FF
in your currency (350.00FF = 300.00FF + 20.00FF for my bank for the change +
30.00FF for international shipping). Don't cheat with the conversion: I will
verify in my newspaper. This money will directly be waste integrally in a
musical instrument of any kind. I swear it!
If you want to buy QSEQ, send me a postcard with your precise international
address and a check or a money order with my name on it. If you don't find the
postcard, don't worry, the check is enough. Remember to tell me what kind of
floppy-disk you want (either 3.5 or 5.25). Registered people will be able to
buy future release for a special friendly price. Did I say "friendly" ? I'm
so generous today! I must have caught a cold or something...
Demo version: you can use the demo version for your private use, and give
copies of it to whoever you want. Just don't sell it, unless you are a crook.
BEWARE, This demo version is not the full version... You cannot save anything
with it ! Too bad, except if you have two PCs and two MIDI cards like a good
friend of mine.
The version 1.0 is dated from 03/1994. If today is 22/10/2028, there is
probably a new release coming soon. Just ask me. Version 2.0 will probably wait
for a year to come, depending also on the success of this one... God, let me
become a millionnaire with this marvellous program.
You can probably find the latest version on Internet via anonymous ftp
to louie.udel.edu:/pub/midi/software/ibm
or in oak.oakland.edu:/pub/msdos/sound.
Let me tell you. SoundBlaster is a trademark from Creative Labs. But their MIDI
port is so simple that it is quite hard to program it efficiently.
And MSDOS is a trademark from Microsoft Corp.
┌─────────────┐
│1 - Contents:│
└─────────────┘
0 - Author, Copyright, Money... (are you sure you red this one?)
1 - Contents (you're in).
2 - Quick description to make you dream.
3 - Future releases.
4 - Bugs, oh no there is no bugs...
5 - What installation ?
6 - Menus philosophy.
7 - Keys conventions.
8 - The status line.
9 - GLOBAL view.
10 - VARIABLE view.
11 - NOTE view.
12 - EVENT view.
13 - FILE view.
14 - SYSEX view.
15 - INFO view.
16 - OPTION view.
17 - STATISTICS view.
18 - How to record and play.
19 - Special keys.
20 - Conclusion.
┌─────────────────────────────────────────┐
│2 - Quick description, to make you dream:│
└─────────────────────────────────────────┘
This sequencer is a text-mode one, written in C and assembly and its
size gives you an average 400Ko free memory for your music, if you are
running MSDOS 5.0. The upper memory is not used if you have more than 640Ko.
Its main purpose is to be very easy and quick to use, with most of the
features that any good sequencer offers. Here are these features:
- PC compatible, with MSDOS 3.0 or greater.
- Support the SoundBlaster MIDI interface.
- 80 x 50 text display, using direct video memory writing for speed.
- Highly secured and reliable MIDI playing kernel, totally independant from
the user-interface activity (I worked for this!).
- Two recording modes: overwrite preexisting material or append.
- Punch in/out while recording.
- Recordable tempo change.
- 40 tracks, with many real-time parameters for each track, including
selective MIDI events filters.
- Each track contains up to 16000 MIDI events.
- Each track can be looped a given number of times.
- Time resolution is 1/192th of a beat.
- Each track is individually mutable or can be set to solo mode.
- Powerful graphic manipulation of tracks and beats (copy, cut,
paste, paste-over, join, transpose, etc...), thru a buffer.
- Powerful graphic edition of any MIDI event in a track (notes,
control changes, aftertouch, bender, program changes, tempi, etc...).
- Tools to smooth continuous MIDI events variations and to filter out
useless events by linear interpolation.
- Tools to create MIDI events by linear or curved progression.
- Sysex capabilities.
- Info screen to memorize useful information about a sequence.
- Real time visualisation in hours/minutes/secondes/hundredth of seconds.
- Load and save MIDI files.
- Easy manipulation of files and directories.
- Metronome click on the PC speaker or thru MIDI.
- And many many others features that I hope you'll like...
┌────────────────────┐
│3 - Future releases:│
└────────────────────┘
In the future, I plan to integrate new features:
- Support of the MPU interface, as soon as I have the money to buy one.
- Support of the synchronization for tape recording, as soon as I have the money
to buy a MPU interface supporting sync.
- Support of multiple MIDI ports, as soon as I have the money to buy a MPU
interface supporting sync and having two MIDI ports to use 32 MIDI channels.
- New tools to manipulate blocks. No money necessary for this one...
- Library of sysex requests, in order to receive sysex dumps without
manipulating synths' panels. Have to think about a clever way to implement
this one.
- A C library to manipulate QSQ format files to allow creation of batch tools
that would increase too much QSEQ size if they were included in it.
- Increase the number of tracks. It is easy but I don't need it and it
can slow down the MIDI output if you have a real slow machine (like me).
Give me a 486/DX-50 as a gift and I will do this.
- Customizable colors and keys for those who are tasteless because my choices
are obviously the bests.
- Any other feature that I need for myself, because I am the first and main
user of this piece of software. The only difference between you and I is
that I get it for free !
If you have any ideas, don't hesitate to send them to me on a letter. But
remember that I want to keep the program quite small and rapid to use. So I
probably won't use any graphic interface with mouse and all this stuff if it
is what you think.
┌────────────────────────────────────┐
│4 - Bugs, oh no there are no bugs...│
└────────────────────────────────────┘
I tested this software on a PC-AT-286/12 MHz with a SoundBlaster Pro card.
It also perfectly works with my MIDI gear (Roland U20 synth, Quadraverb+ unit,
Casio RZ-1 drum machine, Proteus/1 expander). I also tested it on a PC-486/33
of a friend of mine, with YAMAHA synths and a Roland SCC1 card (used as a synth,
not as a MPU interface). I noticed no problem, or if I noticed some, I corrected
them. I also tested it on a PC-386 without MIDI interface. It also works.
But as I am not perfect for the moment, you could find a bug. I'm sure I forgot
some weird case. Don't hesitate to send me a letter to the address above if
you find one. Describe it precisely and you will receive a free upgrade if
you are already registered.
┌───────────────────────┐
│5 - What installation ?│
└───────────────────────┘
This program needs at least a PC AT/286 with a VGA card and a version of
MSDOS greater than v3.0. It's better if you have a color screen because colors
are not customizable for the moment and I don't know what is the result on
a monochrome display... Maybe YOU can tell, hu hu hu...
It also needs a SoundBlaster card as a MIDI interface, with the correct BLASTER
environment variable set in the AUTOEXEC.BAT file (see SoundBlaster's
documentation for further informations).
ex: set BLASTER=A220 I7 D1 T2
If you don't have a SB card, you can test the program interface anyway. When
you record, a MIDI IN input is even simulated. Everything except the MIDI IN
and MIDI OUT routines are working normally.
Files provided in the package are:
- QSQ.TXT : this document.
- QSQ.EXE : the QSEQ program itself.
- TEMPLATE : an example of template for the INFO view.
- WHATISAY.QSQ and WHATISAY.MID : sample music file under QSEQ format and
standard MIDIFILE format. I'm not the creator of this example I found on
the net. I just modify it to make it an obvious example. Thanks to Ray
Charles. I am giving this MIDIFILE, not selling it, so please Ray, if you
read this (ooops excuse me!), don't ask me for any money... ;-)
The only useful file is "qsq.exe". Just type "qsq" to enter the program.
You can also type the name of a file on the command line if you want it to be
loaded at the beginning. Type "qsq -h" if you want a summary of on-line options.
You should store qsq.exe somewhere in your DOS search path if you want to be
able to run it from any directory.
You can also set two others environment variables:
- MUSICDIR that contains the path to your most used music files directory.
- SYSEXDIR that contains the path to your most used sysex directory.
they will be used as default search pathes.
ex: set MUSICDIR=c:\qsq\music
set SYSEXDIR=c:\qsq\sysex
I don't guaranty that this program works with TSR programs. The results may be
weird because I change the frequency of the timer (without loosing system timing
information of course...).
I am not responsible of any damages QSEQ could create on your PC. But it is
just a formula because nothing happened to my PC.
┌─────────────────────┐
│6 - Menus philosophy:│
└─────────────────────┘
At the bottom of the screen, there are 3 lines that are reserved for
menus and interactive questions. The first line is the main menu,
telling you in what view you're in. The current view first letter is
hilighted in a different color that the others. To change from one view
to another, just type the letter of the new view. Notice that every
view main short-key is a capital letter.
The second line is a submenu that depends on the view you're in. It
works in the same way: just type the hilighted letter of the item you
want to activate.
The third line is either for a subsubmenu or an interactive question
or a sequencer message (report or error).
┌─────────────────────┐
│7 - Keys conventions:│
└─────────────────────┘
In this document, we will use the following notation:
- ^A for Ctrl-A.
- aA for Alt-A.
- sA for Shift-A.
That's all for this chapter. Short isn't it ?
┌────────────────────┐
│8 - The status line:│
└────────────────────┘
At the top of the screen, there is the status line, that contains
from the left to the right:
- the name of the current edited file.
- the counter (see "Specials keys - aU" for the different availiable units.
- the tempo in number of beats per minute.
- the signature in number of beats per measure (in the whole sequencer, I
assume that one beat equals one quarter-note).
- the sequencer mode flag:
(E): edit mode.
(P): playing mode.
(R): recording mode.
(S): step recording mode.
- the recording mode flag:
(O): overwrite.
(A): append.
- the punch-in mode flag:
(P): on.
(p): off.
- the metronome flag:
(M): on.
(m): off.
- the midithru flag:
(T): midithru on.
(t): midithru off.
- the memory left. In recording modes, it gives the number of free events
available in the track, assuming one MIDI event uses 4 bytes and each beat
uses also 4 bytes, and assuming one track contains a maximum of 16300
events. In every other mode, it gives the total number of thousands of free
events available.
┌────────────────┐
│9 - GLOBAL view:│
└────────────────┘
Type 'G' to go to this view or ESC.
The zoom:
─────────
The GLOBAL view represents the global content of the 40 tracks of the sequencer,
with or without a zooming feature. So the horizontal direction represents time.
The zoom status is shown at the upper right corner: 'Z' for zoom, 'z' for
unzoom. Use key 'z' to toggle between both modes.
In the zoomed mode, each dot represents a beat (one quarter note or 192 ticks).
In the unzoomed mode, each dot can represent either:
- a measure, if the zoom is based on the signature: each measure contains a
number of beats equal to the signature shown in the status line. Remember
that the signature is use for the metronome accent, and for saving in
MIDIFILES. It is a musical variable. The signature is set with the aS key.
- a group of a user-definable number of beats, independant from the signature.
We will call this number the zooming number. This number is usefull when you
want to have an invariant signature but when you still want to vary the
display (e.g. if you have a 4/4 signature, choosing a zooming number of 24
will give you a larger - but less precise - view on your sequence if you are
in unzoomed mode). So remember that this zoom number is only a display
variable, with no repercussion on the music. The zoom number is set with the
aZ key.
You can toggle between these two display with the ^Z key.
In the zoomed mode, the upper horizontal scale counts beats. Notice that steps
on the scale depends on weither you use the zooming number or the signature
as the number of beats per group.
In the unzoomed mode, the upper horizontal scale counts measures or zooming
number based groups: it depends on weither you use the zooming number or the
signature as the number of beats per group.
Left part of the screen:
────────────────────────
On the left part of the screen, you can read:
- the track name (17 characters max).
- the channel number. If it is used, each event in the track is forced to
this channel, otherwise each event keeps the channel it had when it was
recorded or inserted.
- the optional initial program number which is send when the sequence is
played back from beat 0.
- the status mode:
'-' for an empty track.
'' for a normal non-empty track.
'L' for a looped track.
The followings are overwritting the previous ones when used:
'M' for a muted track.
'A' for an archived track.
'S' for a track in solo mode (only one soloed track at the same time).
Difference between a muted and an archived track: a muted track can be
de-muted while playing, not an archived track. An archived track is
totally ignored while playing, so the performance is better on slow
machines, especially when the archived track contains a lot of events
such as benders, etc...
Right part of the screen:
─────────────────────────
The right part of the screen represent the content of each track. A '.'
means that the beat/measure/group of beats is non-defined. A '-' means that
the beat/measure/group of beats is defined but empty. See "secondary menus,
v(f)il" to understand the meaning of every other symbols.
The end of a track is shown by a '|'. If it is a '<', it means that you are
in unzoomed mode and that the last measure/group of beats does not contain
a number of beats equal to the signature/zooming number.
If the track is looped, every repetition points of the loop are shown by a 'L',
and the last 'L' shows the real end of the track when it is played. If you
press the aL key, you can also see looping points: a 'L' appears on the beat
where the track is looped, and also at the end of the track. If you want to
hide this looping information, use aL key again.
A 'M' at the beginning of a track means that the track is muted.
A 'A' at the beginning of a track means that the track is archived.
Secondary menus:
────────────────
You can use the following secondary menus:
- (m)ute: to mute the current track.
- (s)olo: to set the current track in solo mode: every other track is
muted since you select this menu again.
- (a)rch: to archive the current track.
- (l)oop: to set the current track in loop mode. See the VARIABLE screen
to set the looping beat and the number of loops.
- (i)nsN: insert n beats or n measures at the cursor position, with or
without cuting notes that stands on a limit. The INS key is a shortcut
to do (i)ns1 without cuting.
- (d)elN: delete n beats or n measures at the cursor position, cuting
notes that stand on a limit. The DEL key is a shorcut to do (d)el1.
- (b)lock: a block is a group of consecutive beats of the same track.
There's one buffer that you can be used to store one block and to
copy it in another position.
* (c)opy: copy the marked block in the buffer. You can also use aF4 key.
* (p)aste: paste the content of the buffer at the cursor position,
insering the correspondant number of beats. You can repeat this operation
a given number of time. You can also use aF5 key.
* (k)ut: copy the marked block in the buffer and deleted the block from
the original track. You can also use aF3 key.
* (o)ver: paste the content of the buffer over the cursor position,
erasing any material under the buffer area. You can repeat this operation
a given number of time. You can also use aF6 key.
* (j)oin: paste the content of the buffer over the cursor position, merging
the new material with the old one. For notes, old notes are not erased
by newer ones, for safety reasons. You can repeat this operation a given
number of time.
* (d)el: delete the marked block from the track. Same as (k)ut but leave the
buffer intact.
* (w)ipe: erase the content of the marked block.
* (b)egin: set block begining, and also by the way the block's track.
You can also use aF1 key.
* (e)nd: set block end, and also by the way the block's track.
You can also use aF2 key.
* (z)ero: unmark the current marked block.
* (g)lide: move the block begining to the current cursor position, keeping
the same block size.
* (s)ize: asks for a new block size, keeping the same block beginning.
* (m)anip: special manipulations on the marked block.
- (c)ontinbeat: makes notes continuity for notes contained in the marked
block. At the beat limit notes that ends at the tick 191 and start back
at tick 0 of the next beat are tied together. This feature is useful when
you use block cut/paste/insert/etc.. that often cuts notes at a beat
limit.
- (s)etchannel: changes the MIDI channel of every MIDI events contained in
the marked block.
- (t)ranspose: transposes every notes contained in the marked block of a
positive of negative number of semi-tones. Notes transposed out of the
usual 0-127 range are erased.
- chg(v)elocity: changes the velocity of every notes contained in the marked
block, according to a linear function: newvel=A+B/100*oldvel. If the
result is out of the usual 0-127 range, velocity is either set to 0 or
127.
- (q)uantize: rounds off the starting point of notes to a resolution you
choose. You can also give a roundoff rate
- (t)rack: in this menu, a track is considered as the content of the track and
also every parameters or variables related to the track. The buffer used in
this operation is the same as the buffer used in beats operations, so be
careful not to loose beats or tracks !
* (i)ns: insert one track at the current position. Every tracks behind this
position are translated one step down. Not possible if track 39 is not
empty.
* (d)el: delete current track. Every tracks behind this position are
translated one step up. Be careful, no way to get it back !
* (c)opy: copy the whole current track in the buffer.
* (k)ut: copy the whole current track in the buffer and perform a "track del"
operation.
* (p)aste: paste the content of the buffer in the current track, if it is
empty, and if the buffer contains the result of a "track kut" or "track
copy" operation. Variables of the current track are modified.
* (j)oin: join the content of the buffer with the current track. Variables
of the current track are not modified.
* (e)rase: erase the content of the current track. Variables of the current
track are not modified. If you insert something in the track, they will
all appear again.
* (m)ark: mark the whole current track. Same as "block track" operation.
- p(u)nch: this feature allows you to record with automatic punch-in and
punch-out points. When you are in punch mode and when you hit record, you
stay in playback mode since you reach the punch-in point, where you are
automatically transfered in record mode. Then when you reach the punch-out
point, you are coming back automatically to playback mode. This allows you
to re-record a precise number of beats within an existing, without loosing
peripherical material.
* (u)on/off: switch punch mode on or off.
* (i)n: set punch-in point to the current beat.
* (o)ut: set punch-out point to the current beat.
- (g)oto:
* block (b)egin: go to the begining of the marked block.
* block (e)nd: go to the end of the marked block.
* punch (i)n: go to the punch in point.
* punch (o)ut: go to the punch out point.
* (l)oopingbeat: go to the looping beat of the current track if there's one.
- v(f)il: allows you to set an event-type based filter in the global view.
You can choose what type of event will be shown by a character different from
'-'. For example, if you choose 'note', the global view will only show you
beats or measures containing notes by putting a 'n' on them. Any other
beat or measure does not contain any notes (but maybe other events such as
controllers or tempi).
* (n)ote: tag beats or measures containing notes with a 'n'.
* poly(A)ote: tag beats or measures containing polyphonic aftertouch with
a 'A'.
* (c)trl: tag beats or measures containing controllers with a 'c'.
* (p)rog: tag beats or measures containing program changes with a 'p'.
* (a)ft: tag beats or measures containing channel aftertouch with a 'a'.
* (b)end: tag beats or measures containing benders with a 'b'.
* (t)empo: tag beats or measures containing tempo events with a 't'.
* ENTER: tag beats or measures containing any event with a '■'.
- (c)enter: the current cursor position become the center of the screen.
Jokers:
───────
You can use special items to mark a beat, that I call "jokers". They are
numbered from 'A' to 'Z' and appear on the horizontal scale. They are not
associated with text for the moment, but you can use them to clarify the
structure of your sequence and to mark turning points (intro, chorus, ending,
etc...):
- ^INS: insert a joker at the current beat.
- ^DEL: delete any joker at the current position.
- ^F5: goto next joker.
- ^F6: goto previous joker.
- ^F7: translate one step right every jokers at the right of the current point.
- ^F8: translate one step leftt every jokers at the right of the current point.
- aJ: make jokers visibles or invisibles.
- ^J: goto specified joker.
Use "Options clear(j)oker" to erase all jokers.
┌───────────────────┐
│10 - VARIABLE view:│
└───────────────────┘
Type 'V' to go to this view or F9.
This view gathers informations about each track. You can edit this information
depending on the sequencer running mode or the emptiness of the track.
You can move in this view using the four arrows, PGUP and PGDOWN, HOME and
END (test their meaning by yourself), but also by using the secondary menu
that brings you directly in the column you choose. Use ENTER to edit any field.
For numeric variables, you can just type in a new figure. You can also use
F5, F6, F7 and F8 to increase or decrease the hilighted value of one or
several units.
Secondary submenus are, from left to right:
- (n)ame: name of the track using 17 characters maxi.
- (c)h: MIDI channel of the track. If none, each MIDI event contained in the
track uses its own channel value when sent to MIDI out. You cannot change
this value while the sequencer is running...
- (p)rg: original program change. Not available if there is no MIDI channel
specified above. When playing the sequence from beat 0, the original program
change is sent at the beginning. Changing this value while the sequencer is
playing sends the corresponding program change to MIDI out in real-time. If
recording, this program change is recorded if concerning the record track.
- v(o)l: original volume controller. Not available if there is no MIDI channel
specified above. When playing the sequence from beat 0, the original volume
controller is sent at the beginning. Volume controller is number 7 in the
MIDI norm. Changing this value while the sequencer is playing sends the
corresponding volume change to MIDI out in real-time. If recording, this
volume change is recorded if concerning the record track.
- (b)al: original balance controller. Not available if there is no MIDI channel
specified above. When playing the sequence from beat 0, the original balance
controller is sent at the beginning. Balance controller is number 10 in the
MIDI norm. Changing this value while the sequencer is playing sends the
corresponding balance change to MIDI out in real-time. If recording, this
balance change is recorded if concerning the record track.
- (k)+: on-the-fly transpose value. Any note of the current track is transposed
using this positive or negative number of semi-tones. This is not affecting
the note stored in the memory. You can change this value while the sequencer
is running ! This transposition affects any note coming from MIDI in, even if
the sequencer is running. If you want a hard transposition that affects notes
in the memory, use the "GLOBAL block manip transpose" feature.
- (v)+: on-the-fly velocity change value. This positive or negative amount of
velocity is added to the velocity of any note of the current track. This is
not affecting the note stored in the memory. You can change this value while
the sequencer is running ! This transposition affects any note coming from
MIDI in, even if the sequencer is running. If you want to change multiple
notes velocities in the memory, use the "GLOBAL block manip chgvelocity"
feature.
- (d)ly: on-the-fly time translation. The whole track is translated in
real-time using this neagtive or positive amount of ticks (=1/192 beat). It
is not affected the track as it is stored in the memory. A positive value is
making the track late in comparison with a normal one. This feature is useful
when you want one track to have the priority (for example the drum kit
track): if several notes occure at the same time, you can be sure that the
note of a minus-one-transalted track will occure before the others... You can
also use this feature to create a MIDI echo effects if you copy one track
in an empty one and translate one from the other.
- (g)oto:
- (x)loop:
Both variables are used to set a looping feature: at the end of a track, you
can automatically loop to a previous beat. This beat is set with the (g)oto
submenu or directly in the GLOBAL view with the ^L key (see "Special keys").
You can repeat this feature a given number of time. This number is set with
the (x)loop variable (column called "x"). This number is in the range 0..99.
A number 100 set an infinite ("hi") number of loop. This feature is working
in any case, even when you start the playback after the end of a looped track.
A looped track end is shown by a 'L' in the GLOBAL view. When you toggle
the looping mode in the GLOBAL view, you don't loose the loop number value,
which is just temporarly set to zero.
- (f)ilter: this feature allows you to filter events by type for each track.
It does not affect the track as it is stored in the memory. It is only a
real-time feature used during playback. You can filter out:
* (n)ote: any notes.
* poly(A)ft: polyphonic aftertouch events.
* (c)trlchg: any control changes.
* (p)rgchg: program changes.
* mono(a)ft: channel aftertouch events.
* (b)ender: bender events.
* (t)empo: tempo changes.
- (i)nfo: this field cannot be edited. It just contains different informations.
You can switch from an information to the next one using this submenu.
Available informations are:
* size of the track in number of QSQ events, assuming that a MIDI event is
a QSQ event, but also a beat limit and a tempo change. Each QSQ event uses
4 bytes in the memory.
* number of beats in the current track.
* other informations, for my private use. Try to guess...
┌───────────────┐
│11 - NOTE view:│
└───────────────┘
This view is used to edit notes in the current track. The horizontal direction
still represents time, but more precisely than in the GLOBAL view. Infact,
this view displays a number of beats equal to signature/zooming number (you
can still use ^Z key to toggle between both values). The vertical direction
represents notes in semi-tones (from 0 to 127, assuming that 60 stands for
middle C).
One note is represented by a segment '▄▄▄▄'. Its length represents the duration
of the note. If the note is continued after the left or right edge of the
screen, the cuting point is shown by a ''. If the ending point of one note is
graphically mixed to the starting point of another note, the first note ends
with a '▄▄▄┐'.
The following keys are used:
- LEFT/RIGHT: move one step left/right.
- INS: insert one note at the cursor position.
- DEL: delete the current hilighted note.
- TAB: goto next note.
- BACKTAB: goto previous note.
- sLEFT/sRIGHT: move one beat left/right.
- HOME: goto the left edge of screen.
- END: goto the right edge of screen.
- ^HOME: goto the beginning of the track.
- ^END: goto the end of the track.
- UP/DOWN: move one semi-tone up/down.
- PGUP/PGDOWN: move one octave up/down.
- ^UP/^DOWN: move one track up/down (according to the track order used in the
GLOBAL view).
- ^PGUP/^PGDOWN: move five tracks up/down.
- *: adjust the cursor vertically in order to be in a zone containing notes.
- aF1: mark block begin.
- aF2: mark block end.
Notice that in NOTE screen, marked block limits are give in beats/ticks. These
limits are used as default starting and ending points in functions such as
(p)rog or e(x)tract. In the GLOBAL view, marked block contains only full beats
(it means you cannot copy half of a beat...).
For this screen, you have a secondary status line. Some submenus are used to
shift from a currently edited field (highlighted in blue) to another one. F5,
F6,F7 and F8 keys can be used to change the currently edited field. You can
also just type in a new value. From left to right, fields of the secondary
status line are:
- the track number and the track name.
- UNIT/INC: UNIT gives the type of unit used for in following timing fields:
* tick: each of the following timing values is given in beats and ticks
(remember that one beat equals 192 ticks). INC represents the number of
ticks contained in one horizontal cursor jump (using left or right arrows).
* div: each of the following timing values is given in beats and number of
division of one beat. INC represents a given number that divides one beat
in equal segments, and is also used as the basic horizontal cursor jump.
If the INC value can be followed by a 'b' for binary or a 't' for ternary.
Examples:
* UNIT=tick, INC=048. It means that a cursor jump contained 48 ticks, i.e.
the quarter of a beat. The START field and the LENGTH field are given in
beats and ticks.
* UNIT=div, INC=04b. It means that a cursor jump contained 1/4 of one beat,
i.e. 48 ticks as in the previous example. The START field and the LENGTH
field are given in beats and 1/4th of beats. It can be easier to read that
in the previous example, even if the result is the same.
* UNIT=div, INC=04t. It means that a cursor jump contained (1/4)*2/3 of one
beat, i.e. 1/6. It is useful if you want to play with triplets...
Use the (u)nit submenu to toggle between 'div' and 'tick' and the (i)nc
submenu to change the INC value.
- ECHO: if it is on, when the cursor is touching a note, this note is issued
to MIDI out, with the correct length and velocity (using 'key+' and 'vel+'
offset values of the VARIABLE screen if they are non-zero). Toggle echo
on or off with the (e)cho submenu.
- MODE: When the cursor is on an existing note, this note is hilighted and
the MODE field contains 'cur': it means that START, LENGTH, KEY, VEL, OVL
and CH fields contains values describing the current hilighted note. Any
change of these fields is affecting the hilighted note. You cannot insert
a note on an existing one with the INS key, but you can delete a highlighted
note with the DEL key...
If the cursor is on no existing note, the MODE field contains 'ins': it
means that you can insert a note using default values that stand in START,
LENGTH, KEY, VEL, OVL and CH fields. These default values can also be
changed and are not affected by the cur/ins MODE switching. In this MODE,
you can insert one note with the INS key.
In the 'cur' MODE, you can memorized values of the current note in default
values of the 'ins' MODE by using the (m)emo submenu.
- START: starting point of the current edited note or of the note to be
inserted. Use the (s)tart submenu to make this field the edited field.
- LENGTH: length of the current edited note or of the note to be inserted.
Use the (l)gth submenu to make this field the edited field.
- KEY: heigth of the current edited note or of the note to be inserted,
in semi-tones. Use the (k)ey submenu to make this field the edited field.
- VEL: velocity of the current edited note or of the note to be inserted.
Use the (v)el submenu to make this field the edited field.
- OVL: off-velocity of the current edited note or of the note to be inserted.
Use the (o)vel submenu to make this field the edited field.
- CH: MIDI channel of the current edited note or of the note to be inserted.
remember that the channel value of the VARIABLE view, if it exists, has the
priority... Use the (c)h submenu to make this field the edited field.
Other available submenus are:
- sc(a)le: toggle between three representations of the vertical note scale
(MIDI numbers from 0 to 127, notes in anglo-saxo notation A, A#, B, C,...
or A, B-, B, C,...).
- (d)isp: toggle between three types of display: show whole notes, notes on
only or notes off only. Sometimes useful. Notes on are shown with a '(',
notes off with a ')'. If two or more notes on are overlapping, a 'x' is
shown.
- (t)ag: enable or disable a gadget that makes the cursor reflect the name
of the note in anglo-saxon notation. If the letter is in upper case, the note
is just. If the letter is in lower case, the note is raised.
- (p)rog: tool to create automatically a simple note progression. You give
starting and ending points in beats/ticks, the number of steps, the MIDI
channel, first and last note, first and last velocity and a curve rate.
Can be useful with tuned percussion, as wind chimes...
- e(x)tract: tools to erase a precise range of notes. You give starting
and ending point in beats/ticks, note range (upper and lower value) and
the channel concerned. Useful if you want to erase very precisely.
┌────────────────┐
│12 - EVENT view:│
└────────────────┘
This view is used to edit events such as MIDI controlers, benders, program
changes, monophonic aftertouch and tempo changes. You can edit only one
event type at a time. The current event type is shown in the EVENT filed of
the secondary status line.
The horizontal scale is the same as in the NOTE view. The vertical scale
represents events values. The boundaries are:
- for controlers 0 to 127: 0..127
- for benders: -8192..8191
- for program changes: 0..127
- for monophonic aftertouch: 0..127
- for tempo changes: 1..239 bpm
An event is represented by a black square and events are linked to each other
by gray lines. If several events coexist on the same vertical row, a 'x' appears
at the bottom of the row.
The following keys are used and are sometimes the same as in the NOTE view:
- LEFT/RIGHT: move one step left/right.
- INS: insert one event at the cursor position.
- DEL: delete the current hilighted event.
- TAB: goto next event.
- BACKTAB: goto previous event.
- sLEFT/sRIGHT: move one beat left/right.
- HOME: goto the left edge of screen.
- END: goto the right edge of screen.
- ^HOME: goto the beginning of the track.
- ^END: goto the end of the track.
- UP/DOWN: move one step up/down.
- PGUP/PGDOWN: move one big step up/down.
- ^UP/^DOWN: move one track up/down (according to the track order used in the
GLOBAL view).
- ^PGUP/^PGDOWN: move five tracks up/down.
- aF1: mark block begin.
- aF2: mark block end.
Notice that in EVENT screen, marked block limits are give in beats/ticks. These
limits are used as default starting and ending points in functions such as
interpo(l), (p)rog or e(x)tract. In the GLOBAL view, marked block contains only
full beats (it means you cannot copy half of a beat...).
For this screen, you have a secondary status line that shows from left to right:
- the track number and the track name.
- UNIT/INC: same as in the NOTE view.
- EVENT: current event type:
* c-000 to c-127: MIDI controler 0 to 127.
* aftch: monophonic aftertouch.
* prog: program changes.
* bend: benders or pitch wheel.
* tempo: tempo changes. Notice that you can include tempo changes in any
track which can be useful but also dangerous to control. Use the GLOBAL
view filter to watch only tempi if you are lost...
Use the (n)event submenu to make this field the edited field.
- MODE: When the cursor is on an existing event, this event is hilighted and
the MODE field contains 'cur': it means that START, VAL and CH fields contain
values describing the current hilighted event. Any change of these fields is
affecting the hilighted event. You cannot insert an event on an existing one,
but you can delete an highlighted event with the DEL key...
If the cursor is not no an existing event, the MODE field contains 'ins': it
means that you can insert an event using default values that stand in START,
VAL and CH fields. These default values can also be changed and are not
affected by the cur/ins MODE switching. In this MODE, you can insert one event
with the INS key.
In the 'cur' MODE, you can memorized values of the current note in default
values of the 'ins' MODE by using the (m)emo submenu.
- START: starting point of the current edited event or of the event to be
inserted. Use the (s)tart submenu to make this field the edited field.
- VAL: value of the current edited event or of the event to be inserted.
Use the (v)alue submenu to make this field the edited field.
- CH: MIDI channel of the current edited note or of the note to be inserted.
remember that the channel value of the VARIABLE view, if it exists, has the
priority... Use the (c)han submenu to make this field the edited field.
Other available submenus are:
- interpo(l): tool to make a linear interpolation on a subset of events.
You give starting and ending points in beats/ticks, the size of the step
in ticks. At the end, you only get one event for each step, which is
calculated with a linear interpolation using neighbours values.
It is useful to interpolate between two events separated by a
large gap or, on the contrary, to find a clever way to delete events when
they are too numerous. Notice that some steps may finally not contain any
event because the process does not allow two successive equal events.
Use this especially for benders that often generate more events than needed.
Oh yes, a last parameter is a question about if you want to keep large empty
gap free of any event: when a large gap of more than 2 steps is encountered,
the interpolation is not done. It is useful for events such as benders:
benders are often grouped together in some area, with empty gaps beetween:
using this option will allow you to disable interpolation within these gaps.
- (p)rog: tool to create automatically a simple event progression. You give
starting and ending points in beats/ticks, the number of steps, the MIDI
channel, first and last values and a curve rate.
Can be useful to create smooth volume increasing for example, with a
parabolic increasing.
- e(x)tract: tools to erase a precise range of notes. You give starting
and ending point in beats/ticks, note range (upper and lower value) and
the channel concerned. Useful if you want to erase very precisely.
┌───────────────┐
│13 - FILE view:│
└───────────────┘
The file VIEW is used to deal with music files. If you use a file with a ".MID"
extension, it will be considered as a format 1 standard MIDIFILE. Any other
extension will make it considered as a QSEQ file, but QSEQ files extension
are ".QSQ" by default. QSEQ file can be a little bigger than standard MIDIFILE,
but it contains more informations (sysex, tempo on every tracks) and it's
really quicker to load and save.
An example is included in the package. It's a file I found on the Internet,
called WHATISAY.MID. It's a transcription of a tune from Ray Charles. I loaded
it originally under MIDIFILE format, added my changes to make it an obvious
example and save it under QSEQ format and under MIDIFILE format again, to
allow you to make comparisons. Notice that INFO and SYSEX view information are
not saved under MIDIFILE format, and that, according to MIDIFILE standard,
every tempo changes are stored in track 0. In this example, you can visualize
"jokers" and the result of the looping feature.
Available submenus are:
- (l)oad: load a file, forgetting the previous one.
- (a)ppend: load a file by adding it to any previously loaded file. It is
done by filling available empty tracks... The values of the VARIABLE view
are not overwritten. Neither are the initial tempo and the signature.
- (s)ave: save a file, with the possibility to change its name if it has
already one. You can use F2 at any time to save the current file under its
name.
- (d)elete: delete a file on the disk.
- (c)learmem: erase the file currently edited, but do not delete it on the disk.
When you enter any of the four first submenus, it only prompt you for a file
name. Then you have several possibilities:
- enter the name of the file. If you are performing a "save", the file is saved.
The current musicfiles path is used if you don't include a path of your own.
This current musicfiles path is set to the content of the MUSICDIR
environement variable when you start QSEQ.
- if you want to see the content of a directory and pick a name in a list of
existing files, you can either:
* enter nothing: it displays .MID and .QSQ files contained in the current
musicfiles directory, and you can pick a file name or even move in the
disk tree or on others disks.
* enter a DOS name including wildcards '*' or '?'. It displays the content of
the given directory if you include a path or the content of the current
musicfiles directory, using the given filter.
┌────────────────┐
│14 - SYSEX view:│
└────────────────┘
With this view, you can create a list of sysex files to send thru MIDI OUT.
This list is saved with the sequence. It contains sysex files names possibly
including a path. When no path is included, the file is assumed to be in
the current sysex directory. The current sysex directory is set to the content
of the SYSEXDIR environement variable when you start QSEQ.
A sysex file contained one or several sysex dumps. A sysex dump is a subset
of bytes. The first byte is F0(hex) and the last is F7(hex). All other bytes
have bit 7 clear.
Available submenus are:
- (s)end: send the currently selected file thru MIDI OUT.
- (r)eceive: receive a sysex dump from MIDI IN. First you are prompted for a
sysex file name (You can use the same facilities as in the FILE view). Then
prepare your MIDI gear to send a sysex dump. Press a key to put QSEQ in
waiting mode and send the sysex. It is recorded on the disk and the file
is added to the list.
- send(a)ll: send all sysex files from the SYSEX view. You can make the same
by typing ^A from any view when the sequencer is not running.
- (i)nsfile: prompt you for a sysex file name to add to the list.
- (d)elfile: delete the selected sysex file from the list but not from the disk.
- re(n)name: change the name of the selection. Does not affect files on the
disk.
- send(p)ause: prompt you for a number of 1/100s to wait between each sysex
groups that may be contained in a single sysex file. Useful for big sysex
dumps that must be sent to slow synth. Am I thinking to my poor Roland U20 ?
Maybe...
┌───────────────┐
│15 - INFO view:│
└───────────────┘
In this view, you can type any information about the current sequence.
The editor is a simple one. It is always in insert mode. Keys that can be
used are:
- arrows, PGUP, PGDOWN to move around.
- DEL: delete current character.
- BACKSP: delete previous character.
- ^BACKSP: delete current line:
- HOME: goto beginning of line.
- END: goto end of line.
- ^HOME: goto beginning of text.
- ENTER: insert a carriage return and goto next line.
For example it is useful to enter:
- the tittle.
- the author.
- teh date of creation.
- electronic instruments used.
- any comments (on the analog part of the mixdown, effects used, etc...).
The F1 key can be used to insert a text file in the text, e.g. a template
file. A template file called "template" is included in the package.
┌─────────────────┐
│16 - OPTION view:│
└─────────────────┘
You can set some of the sequencer options in this view:
- (m)etronome: you can either choose between no metronome, or two different
metronomes:
* (n)one: no metronome.
* (b)eep: the metronome is heard thru the PC speaker.
* (m)idi: the metronome is heard thru MIDI.
* beep(f)requency: set frequencies of main and secondary metronome clicks in
beep mode.
* midi(v)al: choose two MIDI notes as main and secondary metronome clicks
in MIDI mode.
- midiin(f)lash: set or defeat flashing of the "mem" value on the status line
when a MIDI byte comes in while the sequencer is running.
- midi(t)rhu: set or defeat the internal midithru, i.e. local on/off.
- clear(j)okers: clear all jokers (see GLOBAL view).
┌─────────────────────┐
│17 - STATISTICS view:│
└─────────────────────┘
QSEQ can display statistics on the current track. Just press ^S. It gives
you the number of events in each types and others values. Type ESC to quit
this view.
┌────────────────────────────┐
│18 - How to record and play:│
└────────────────────────────┘
You start playing back a sequance by pressing SPACE. The playback starts at the
current beat. If starting at beat 0, initial controllers from the VARIABLE view
are sent to MIDI OUT. If you start anywhere else, be aware that controllers
may not be in their logic position because you didn't play the sequence until
the beginning. To solve this, use the ^F key to determinate and send these
controllers last logic values. While playing, the sequencer status becomess 'P'
in the status line.
While playing, you can start recording by pressing ^R. The record is assumed
to start at the tick 0 of the current beat. Remember this, because it is
important when you are in overwritting recording mode. While recording,
the sequencer status becomes 'R' in the status line.
Yes, there are two recording mode: "overwritting" and "appending". You can
switch from one to another with key aR. The current mode is shown on the
status line ("Ov" or "Ap").
In overwritting mode, new material overwrites old one. This is always done
using full beats. It means that if you start recording while playing at the
middle of one beat, the material of the whole beat will be lost. Same thing
for the end of the recording: the whole last beat is lost.
In appending mode, new material is just appended to old one, but new notes
cannot erased old ones, for safety reasons.
You can also start recording directly when the sequencer is not running. Just
press ^R to set the sequencer in recording mode. Press SPACE when you want the
record to begin. If you are using a non-zero countdown value, the playback
is beginning before the current point to let you hear previous beats, but the
record begins only when the current point is reached. This coutdown value is
set with the aC key; it is a number of beats.
There is also an interesting feature if you want to insert new material between
two beats and not anywhere else. It is the punch in/out feature. Use "GLOBAL
p(u)nch" menu to switch in on and to set the starting and ending beats. Then
go before the starting beat and press ^R and space to start recording. The
sequencer will set itself automatically in record mode between the punch-in
beat (included) and the punch-out beat (excluded). Anywhere else, it will
stay in playback mode and leave old material untouched.
┌──────────────────┐
│19 - Special keys:│
└──────────────────┘
Some features are not accessible thru a menu but thru short-keys:
Space: play. When playing from the first beat, initial controllers from
the VARIABLE view are sent first and a little pause is made, allowing
slow MIDI gear to be ready when the sequence begins.
F2 : Save current file, with automatic backup to ".BAK".
F3 : Switch metronome on/off (see also key "aM").
F4 : Switch to next unit mode for the counter in the status line.
(see also key "aU").
F6/F5: increase or decrease of one unit any value.
F8/F7: increase or decrease of a "big step" any value.
ESC : go back to GLOBAL view.
F9 : Switch to VARIABLE view.
F10 : Switch to NOTE view.
F11 : Switch to CTRL view.
F12 : Switch to BENDER view.
^F5 : goto previous joker.
^F6 : goto next joker.
^F7 : translate one step right every jokers at the right of the current point.
^F8 : translate one step leftt every jokers at the right of the current point.
aF1 : mark block begin.
aF2 : mark block end.
aF3 : cut block.
aF4 : copy block.
aF5 : paste block.
aF6 : paste block over.
Alt keys:
─────────
aX: quit, type aX again to confirm.
aT: If the sequencer is stopped, it is used to change the initial tempo
value. If the sequencer is running, use it to enter tempo change mode.
If you are recording, tempo changes are also recorded. Use ESC key to
exit this mode.
aR: toggle between both recording modes. The current recording mode is
shown by the second flag of the status line: (O)verwrite / (A)ppend.
aC: countdown value: ask for a number of beat to playback before any
record. Then you can listen for these beats and get the rythm before
playing like a maestro.
aS: to choose the signature. Set the number of beats per measures, and so
the metronome variation. Also useful to set the number of beats per
view in the NOTE view or the events views.
aM: toggle metronome click on/off while playing/recording. The current
mode is shown by a flag in the status line: (M) for on, (m) for off.
You can choose the metronome type (beep or midi note) in the OPTION
view.
aU: to choose the unit of the counter in the status line. You can choose
in menus between the following:
- (b)eats: beats/ticks.
The label of the display is "beat-xx", where xx is either the signature
or the zooming number.
- (m)eas: measures/subbeats/ticks.
The label of the display is "m-xx" where xx is the signature.
- (z)oomnum: zooming number based groups of beats/subbeats/ticks.
The label of the display is "z-xx" where xx is the zooming number.
- (t)ime:
approximative time in hours/minutes/seconds/ hundredth of seconds.
This value is interpolated using the initial tempo value, so it
can be a bit false if you use tempo changes, but it gives a good
idea of the approximative timing.
- (c)hrono:
exact time in hours/minutes/seconds/ hundredth of seconds. This value
is exact but is reset to zero at any time you start playing or
recording. If you start from the first beat, it gives you the
absolute exact timing of you sequence. If you start anywhere in
the sequence, it gives you the relative exact timing from the
beginning of the playing. To use as a chronometer.
For the three first modes, you can also have a total value for the
whole sequence.
a0: toggle midithru feature, i.e. local on/off. The current midithru status
is shown on the status line ('T' for on, 't' for off).
aZ: choose the number of beats per unit in GLOBAL view. This
is also the number of beats per screen in the NOTE and EVENT view.
aJ: make jokers visibles or invisibles in the GLOBAL view.
aL: make looping points visibles or invisibles in the GLOBAL view.
Ctrl keys:
──────────
^R: enter recording mode and wait. Press SPACE to begin recording or ESC
to abort before it's too late...
^E: step-record mode: when you are in this mode, any key entered thru MIDI
IN is used to insert one note in the current track (if you are in NOTE
view) and to make a step forward. The size of the step is given by the
INC value in the NOTE view. The length of the note is determinated by
the default "note length value" in the NOTE view.
^P: midi panic: send all notes off messages, off damper switches, zero
modulation controller and zero bender on every MIDI channel.
^Q: send initial controllers from the VARIABLE view thru MIDI OUT.
^F: search for the value of each controller at the current beat and send
them thru MIDI OUT.
^A: send all sysex from the SYSEX view.
^S: enter the statistic view that counts the number of events in each
MIDI category in the current track.
^C: make notes continuity between the current beat and the previous one,
for notes that ends at the tick 191 and start back at the tick 0.
Useful when you use block cut/paste/insert/etc.. that often cuts notes.
^L: shortcut to set the looping beat of the current track to the current
beat (also available as a parameter in the VARIABLE view).
^Z: toggle between signature or zooming number based global view.
^B: goto beat.
^T: goto track.
^J: goto joker.
^K: free the buffer.
^V: refresh any view.
┌───────────┐
│Conclusion:│
└───────────┘
So here is the whole thing. I hope you find QSEQ interesting enough to use
it for your musical work. Remember: 1) if you don't like Windows, 2) if you do
like quick and easy to use software, 3) if you look like an elephant - I mean
if you don't like mice but shortkeys and all this kind of stuff - , 4) if you
don't want to spend a lot of money buying a big sofware and the PC-486-DX2-66
it needs, 5) if you don't hate french people even if they eat frogs legs - it's
good, it tastes like a very delicate chicken - , 6) if you were very upset when
you discovered that the demo version didn't save anything,...
... one solution: buy me, you won't regret it.