amc dance.scoA score file contains short tunes that are to be combined into a complete piece of music. This combining is controlled by a script file which is a normal text file. After the script file dance.scr has been read the screen may look as follows.
If one of the play buttons is clicked then the loudspeakers connected to your computer will play this cheerful song.
It is also possible to double-click a score file, or a script file. If script file xxx.scr is double-clicked, then first xxx.sco will be loaded if it exists. The script file can be created or modified by the built-in editor, or by your favorite extern editor.
AMC is quite different from other music software. It is especially focused on composing music, which is a very difficult endeavor. The tool tries to place as little hurdles as possible on the user's road. See also the last chapter.
The entering of new tunes is done on a normal 5-bar staff (treble or bass clef) in one of the 2 panels at the left. There are 2 kinds of instruments: sampled instruments for percussive sounds, and sounds that are generated real-time. Fore each kind there is choice between 7 instruments, indicated by a color. The sound of a real-time instrument can be modified via its own control panel, that will appear when the appropriate color is selected.
The characteristics of a real-time instrument are controlled by algorithms. So if you know how to program, then the creation of different sounds belongs to the possibilities. How AMC is controlled will be explained in the next chapter via the panels and widgets of the graphical user interface.
AMC can also be scripted, using the language Scheme. A short introduction is in
chapter Scripting with Scheme.
If the middle mouse button is used, then the note will be staccato (indicated by a shortened display of the note). If the note is staccato already it will be turned back to normal.
Sampled instrument notes are created if the sampled notes checkbox is enabled. In this case the instrument control panel (middle right of the window) will list the available sampled instruments, provided that the wave files have been read. Notice that these files are read when they are needed for the first time, so if only tunes with real-time instruments are played then the samples will never be read. Sampled notes are indicated by colored crosses. Their vertical position is irrelevant, because their frequency is fixed.
Clicking the right mouse button will create a vertical 'end-of-tune' line. This will be useful when several tunes are combined later on, because then no timing information will have to be specified in the script file. Also, this way the length of a tune can be increased beyond its initial value. To accomplish this, first resize the AMC window in the horizontal direction. Then extra white space at the right of the scores will appear. Clicking here with the right mouse button will increase the score size.
The color of the notes is choosen by the color control panel (middle of the window), but first one score must be the active score, which is controlled by the active button in a score panel. If this button is clicked once more, then none of the scores will be active. The status of the active button is relevant for several different operations, thus it can be harmful if it is on inadvertantly. Therefore it is always reset after being used. If you don't want this, you can keep the status by pressing the shift key before clicking some button or slider.
The amplitude slider controls the loudness of the notes, which can be overruled when the tune is used as a building block for a complete piece of music.
The tune in the score is sounded by clicking the panel's play button. It is possible to indicate the starting and stopping times of the playback. This is done by clicking the left and right mouse buttons respectivily, above the highest score line, and is indicated by small red triangles. They can be undone by clicking at the same point a 2nd time, or by clicking the middle mouse button.
With checkbox labeled zoom a small window with a zoomed-out view of the tune can be popped up. In this window small note delays can be introduced. See the zoom window chapter.
When the repeat checkbox is enabled, the tune until the 'end-of-tune' line will be repeated. This also works for red triangle start/stop signs. The repeating can be stopped with the stop button.
With the small blue rotary control the appearance of the score display can be modified. Normally the text instr is shown. If the text ampl is made visible, then the amplitude of the notes in the score is shown in an ascending shade of grey.
Usually, musical scores are preceeded by 'flat' or 'sharp' key signatures, depending on the key in which the piece is written. The key signatures are drawn in front of the score lines, see chapter Chords. If a note is entered on such a line it will be raised or lowered one semitone.
The color of a new entered note is determined as follows:
- if it is next to an existing note, it will take that note's color;
- else if the checkbox draw with color is active, it will take the active color
from the color panel;
- else it will take the default color (assigned by clicking in the
color panel while the active button is on).
The action performed by clicking or dragging the left mouse button can be modified by the buttons underneath the score panels, see the next chapter.
Clicking outside a note will select all note parts under and above the clicked location. By dragging the mouse an area of selected notes will be created.
Instead of the select button also the S key can be used.
Selected note parts can be moved, copied, deleted, re-colored or they can get a different amplitude. Notice that the select button stays active after the mouse button has been released, whereas the other buttens will be reset in this case.
The sign of a note (flat or sharp) is not retained, it will be equal to the key signature of the new score line. Notice that if a selected note is moved to a position outside the valid score area, it will be lost.
If the K key is pressed before releasing the mouse button, then the moving of selected note parts will not occur (K means 'keep').
Again, if the K key is pressed before releasing the mouse button, then the copying of selected note parts will not occur.
- If the cursor is on a note, the cursor shape becomes a square. Then the mouse can be dragged, the cursor becomes a dot. If the cursor reaches another note, the cursor again becomes a square. If the mouse is released at that moment, then a line is drawn from the first note to the second.
- If the cursor is on a note which is the start of a portando line, then the line is omitted.
- If the cursor is not on a note, then nothing happens.
Notice that normal notes that differ one semitone are treated specially. For instance a B note that is made sharp will turn into a C note.
Instrument | |
Black | An FM instrument, like the Yamaha DX7. The basic sinus signal can be FM modulated with 0.5 till 8 times the basic frequency. The modulation index can be choosen between 0 and 5. Both frequency and index are controlled with a two-dimensional slider. The modulation frequency is either an integer or a rational multiple of the basic frequency, depending the checkbox sub band. |
Brown | Also an FM instrument, like the black one. The modulation frequency can be detuned in order to create interesting sounds. |
Red | The waveform is a repeating pattern consisting of 2, 3 or 5 cycles
(with varying frequency) of a sinus wave.
This yields a frequency spectrum with a wide formant component.
The number of cycles as well as the frequency variation within one cycle are controlled
with 2 two-dimensional sliders labeled diff/nrsin, one for the startup,
one for the sustain part of a note. With slider start-amp the amplitude at
startup is controlled.
This instrument a.o. can imitate a guitar or a bass-guitar. |
Orange | Like the red instrument: the waveform is a repeating pattern consisting of 2, 3 or 5 cycles
(with varying frequency) of a sinus wave.
The number of cycles as well as the frequency variation within one cycle are controlled
with a two-dimensional slider labeled diff/nrsin.
This instrument a.o. can imitate a soft-sounding guitar or a cello. |
Green | A waveform with a random quality: each note sounds slightly different. The waveform is built up from straight lines. This instrument is well suited for a solo voice, and chords can sound beautiful. |
Blue | Basicly a pulse. If the chorus checkbox is enabled,
then a second pulse with a slightly different frequency is added with the opposite
amplitude. The 2 signals cannot fully cancel each other, because they
are asymmetric. With the rich tone checkbox pulses with 2 and 3 times the
basic frequency can be added. If the piano attack checkbox is enabled,
then the amplitude envelope will be piano-like. In this case the value of the
attack slider is irrelevant.
This instrument can have a pure, floating quality, or a full rich sound if chorus and rich tone are enabled. |
Purple | An additive synthesis instrument, like a Hammond organ. The sound is the sum of sinus waves with a frequency of 1 upto 10 times the fundamental, with separate controls for these harmonics during startup and sustain. Duration of the startup is controllable. This instrument can sound very nice and mellow. |
The small blue widgets control the stereo location of the different instruments. Clicking the widgets modifies this location between left, middle an right. The stereo effect is created by delaying one channel with 2 msec, not by decreasing its amplitude. The intention is mainly to craete richer sounds.
If the default file name in the dialog panel is still valid, then also the save button can be clicked a 2nd time.
Files are conventionally saved with extension .sco. A saved file is more or less human readable. Modifications like renaming or copying of the tunes could be done with a normal text editor. Also other modifications like e.g. re-coloring of all notes could be done, as each parameter has a unique letter code. Tip: in your text editor, set the line wrap setting to off.
Also the notes of one single instrument can be processed. This occurs if the solo voice checkbox is on, using the instrument as choosen in the color panel.
If the ignore set cmd's checkbox is on, then the set commands in the script will be skipped.
The position of the starting and stopping marks in the complete score controls the operation. The time:n parameter of set and add etc. commands will be modified, as follows:
In case of add and take commands: All times greater or equal than the starting mark will be decreased with an amount equal to the distance between the stopping and starting mark. All tunes starting between the stopping and starting mark will be removed.
Operations that are not provided by the available buttons sometimes can be performed by giving an appropriate command. After reading the script syntax chapter the following examples will be clear.
Starting and stopping times can be controlled by clicking in the score panel, using the left or the right mouse button.
After the playing has stopped, sliders and checkboxes will be redrawn such that they show their final value.
The scroll button can be used to see all parts. The audio clipping level is indicated by a dotted line. By means of the checkbox labeled all a choice can be made between a detailed view, where only the first part of the audio buffer is shown, or a complete view.
The script editor is a simple text editor with standard key shortcuts:
alt X: cut text and copies it to the clipboardAlso, text selection and -replacement using the mouse works. As stated, the script is executed with the run button, or saved with the save script button. When the capabilities if the built-in editor are too limited, you better use your favorite editor instead, and click the script... button afterwards.
alt C: copy text to the clipboard without cutting it
alt V: paste text taken from the clipboard
alt A: select all of the text
alt Z: undo the previous action
At the bottom of the score the names of the tunes that were used as building blocks are shown. Clicking on the play button (right middle) will start the playing. After this the appearance of all controls is updated such that they show their final value.
This score cannot be modified with the mouse, only starting and stopping times of the playback can be indicated. This is done by clicking the left and right mouse buttons respectivily, and is indicated by small red triangles. They can be undone by clicking at the same point a 2nd time, or by clicking the middle mouse button.
Notice that always before playing all script set
commands are executed, also when the playing starts at a later time.
However, when the ignore set cmd's checkbox is on, then the set commands will
be skipped. This is handy if you want to experiment with different instrument
settings and also read a script.
Notice that the original unzoomed notes are not modified. Modifications
in the original score become visible in the zoom window after 2 times clicking
the zoom checkbox.
Editing the notes in the zoom window is simple: clicking on the start of a
note with the left mouse button will introduce a delay of 1, 2, 3, 0, ... times
1/3 note unit. Clicking with the right button has the same effect at the end
of the note. Clicking somewhere in the middle of a long note has a visible
but not an audible effect.
First the base tone at the left is selected, then the desired chord at the right.
If one of the score panels is active, then the chord will appear there
at the left side, or after the end-of-score line if it exists.
The notes are in "selected" mode, and thus can be moved or copied to the
place where you want them.
The chords window offers yet other facilities. When the set key button
is clicked, then key signatures will be drawn in the active score panel. So if e.g.
the base tone F is selected, then a flat signature will appear in front of all score lines
for note B. When clicking the force key button all notes in the active score panel
will get the key signature of their line.
WAVE files are rather big. They can be converted to MP3 format with a suitable
converter. See the README file for details.
Zoomed-out score view
If a checkbox labeled zoom is enabled, then a new (sizable) window is opened depicting
the score part between start and stop signs, enlarged 3 times in the horizontal
direction. The timing of the individual notes can be modified such that at the beginning
of a note an extra delay can be introduced, as well as at the end of a note.
This way e.g. it is possible to create 3 notes in a 4-unit interval, or 3 notes
in a 8-unit interval. This is demonstrated in the following screenshot.
Chords
Several standard chords can be entered easily if the chords checkbox
is enabled. Then a small window pops up:
Note distances
In this app, note entry is done on traditional scores. For the inexperienced
composer it is sometimes difficult to see the actual amount of semitones
between different notes. These can be visualized by enabling the note distances
checkbox. The notes between starting and stopping marks in the complete score
will be displayed in a small window:
Creating a WAVE file
While the score at the bottom is playing, a WAVE file can be generated.
This will happen if the checkbox labeled create wave file is enabled.
The file name is out.wav. If you invoked AMC from a terminal,
the file will be in the current directory; if you invoked AMC by double-clicking
its icon, then the file will appear in the /boot/home directory.
Creating a MIDI file
The midi output file is meant to be processed by other programs or instruments, or
by score-printing software. Enable the create midi file checkbox
and press the play button. The mapping from colors to midi instruments
is fixed. For the real-time instruments this mapping is as follows:
For the sampled instruments the mapping is:
black : midi instrument 6, electric piano 2 red : midi instrument 25, guitar green : midi instrument 41, violin blue : midi instrument 1, piano brown : midi instrument 5, electric piano 1 purple : midi instrument 17, drawbar organ orange : midi instrument 26, guitar
black : midi (channel 10) instrument 36, bass drum red : midi (channel 10) instrument 47, low-mid tom green : midi (channel 10) instrument 38, acoustic snare blue : midi (channel 10) instrument 46, open hi-hat brown : midi (channel 10) instrument 42, closed hi-hat purple : midi (channel 10) instrument 62, mute high conga orange : midi (channel 10) instrument 39, hand clap
Script syntax
A script file (conventionally with .scr extension) consists of separate
commands, each ending in a newline or a semicolon. Parameters for the commands
have the form keyword:number. The comment sign is #, after this character
the rest of the line will be ignored.
The basic commands are as follows.
take name | Clear the internal score buffer, copy tune name to it. |
take-nc name | Copy tune name to the internal buffer without first clearing it. |
add | Add the buffer contents to the big score. |
add name | Add tune name directly to the big score. |
put name | If name is found in the list of tunes, then copy the contents of the buffer to this tune. If name is not found, then first create a new tune. |
exit | Skip rest of script |
set | Set parameters. |
Most basic commands can have parameters. The add, take and take-nc commands take the same set, as follows:
time:number | Add at a certain time. number has one of 2 forms: n - indicates the measure number n.m - e.g. 3.2 indicates the 2nd note-unit in measure number 3. Multiple times are also supported, e.g. time:2.4,9 means that the tune will be added at the start of measures 2.4 and 9. If no time:n command is given, then the current time is supposed, which is defined as the latest stopping time of all tunes added until now. |
rt:number | Relative time: add with respect to the current time. |
shift:n | Shift all notes n semitones up (if n is positive) or down (if n is negative). If the score is in a key containing flats, then accidentals (the black keys of a piano) will be flats. If the score is in a key containing sharps, then they will be sharps. |
raise:n | Shift all notes n lines up or down. The sign of the notes is not copied, like when moving selected notes with the mouse. |
ampl:n | Set the amplitude to n. Values between 1 and 6. |
from:n to:m | Take an interval. n and m are numbers like in the time: parameter. |
The set command can take many parameters. Notice that for the start of tones two different values can be specified: "attack" specifies the amplitude at the beginning of a tone, "startup" specifies the waveform at the beginning of a tone.
| Valid values for n, m etc. | |
time:number | Succeeding parameters are valid after this time. number has one of 2 forms: n - indicates the measure number n.m - e.g. 3.2 indicates the 2nd note-unit in measure number 3. Multiple times are supported. The time:n parameter can be given more then once on the same line, the last read value (or list of values) is valid. If no time:n parameter is given, then the current time (as defined for the add command) is supposed. | number >= 0 |
rt:number | Relative time: set with respect to the current time. | |
tempo:n | Set the tempo. | n > 10 |
black-attack:n green-attack:n blue-attack:n brown-attack:n orange-attack:n | Set instrument attack. | 0 ≥ n ≥ 5 |
black-decay:n red-decay:n green-decay:n blue-decay:n brown-decay:n orange-decay:n | Set instrument decay. | 0 ≥ n ≥ 5 |
red-start-wave:n,m red-sustain-wave:n,m | Set waveform of red instrument during startup or sustain. The waveform will consist of m sinuses, which vary in frequency dependant on the value of n (value 1: small difference, tone with a strong formant; 5: big difference, bright sounding tone). | 1 ≥ n ≥ 5 2 ≥ m ≥ 4 |
red-startup:n | Set duration of startup wave of red instrument. | 0 ≥ n ≥ 5 |
red-start-amp:n | Set amplitude at startup of red instrument. n=0 : soft startup n=3 : loud startup | 0 ≥ n ≥ 3 |
green-tone:n | Set tone of green instrument (0: soft, 3: sharp). | 0 ≥ n ≥ 3 | blue-piano:b | Set a piano-like attack of the blue instrument. | b = on, off |
blue-rich:b | Set extra harmonics of blue instrument. | b = on, off |
blue-chorus:b | Set chorus effect of blue instrument. | b = on, off |
black-fm:n,m brown-fm:n,m | Set FM parameters. The actual values for the modulation index and for the ratio modulation/carrier frequency, are as displayed near the fm freq/index slider; they also depend on sub band on or off. | 0 ≥ n ≥ 7 0 ≥ m ≥ 7 |
brown-detune:n | Set detuning of modulating frequency of brown instrument. | 0 ≥ n ≥ 5 |
black-subband:b brown-subband:b | Set FM modulation range of brown or black instrument. | b = on, off |
purple-start-harm:n1,n2,n3,n4,n5 | Set startup harmonics of purple instrument. | 0 ≥ n1 ≥ 3, etc. |
purple-sustain-harm:n1,n2,n3,n4,n5 | Set sustain harmonics of purple instrument. | 0 ≥ n1 ≥ 3, etc. |
purple-startup:n | Set startup duration of purple instrument. | 0 ≥ n ≥ 5 | orange-wave:n,m | Set waveform of orange instrument. The waveform will consist of m sinuses, which vary in frequency dependant on the value of n (value 1: small difference, tone with a strong formant; 5: big difference, bright sounding tone). | 1 ≥ n ≥ 5 2 ≥ m ≥ 4 |
black-loc:s red-loc:s green-loc:s blue-loc:s brown-loc:s purple-loc:s | Set stereo location. | s = left, mid, right |
Notice the different semantics of the time:n parameter. If it follows an add, take or take-nc command, it is valid for the whole line; if it follows a set command, it is valid for the statements behind it.
The colors in statements after a set command can also be stated differently. As an example: the line
set red-soft:on red-startup:1 red-decay:2can also be written as:
set red soft:on startup:1 decay:2
Instead of set also uppercase SET is valid.
The interface between AMC and MiniScheme is simple. If MiniScheme sends a message to AMC, then AMC will respond by sending the notes that have been selected in a score panel. Then MiniScheme makes a list of these notes, which can be processed by a user-created Scheme program. Then a new list of notes can be sent back to AMC, that will create a new tune from it, called 'from-scheme'. This tune can be renamed, modified or removed as the user whishes.
We will only show here one example Scheme program, that will create a simple bass line (arpeggiated chords) for a tune in which the important notes have been selected. The chords will always start at the beginning of a measure.
(define amc-data (list>list `(get-selected-notes))) (define meter (cadr (assq 'meter (car amc-data)))) (define notes (cdr amc-data)) (define (sh n) (- n (remainder n meter))) (define (n1 n) (list (+(car n) 5) (sh(cadr n)) (caddr n) 2)) (define (n2 n) (list (+(car n) 3) (+(sh(cadr n)) 2) (caddr n) 2)) (define (n3 n) (list (+(car n) 5) (+(sh(cadr n)) 4) (caddr n) 2)) (define (n4 n) (list (+(car n) 7) (+(sh(cadr n)) 6) (caddr n) 2)) (define new-notes (append (map n1 notes) (map n2 notes) (map n3 notes) (map n4 notes))) (list>undef `(send-notes ,new-notes))As this is rather geeky stuff, a complete description will not be given here. If you are interested, please email. It is the author's intention to create facilities for transforming existing tunes and for automatic music composition.
The current BeOS implementation of USB drivers apparently is not quite perfect. The keyboard must have been switched on before AMC is started. Even then, the connection might fail, in this case simply restart AMC. While playing, irritating noises sometimes are audible, at least on my (old, slow) computer.
In order to create a tune with the keyboard it is best to first create a small, rhythmic tune, and play this with repeat enabled. Then play what you want on the keyboard, and if you're done, click stop. At that moment a new tune called "keyboard" will appear at the end of the list in the tunes panel. The new tune can be renamed, assigned to a score panel, edited, re-colored, whatever.
The number of voices that can sound at the same moment is restricted to 10 (which can easily be modified in the source code). If this number is exceeded then a warning is issued. Notice that a note that is in its decaying phase still occupies a voice, so if short decay values are choosen then more notes can overlap.
If you want to do something that's not possible, e.g. assign a note color while no score panel is active, then simply nothing happens. And if you try to quit the app after extensive modifications of the tunes without hitting the save butten, then no warning whatsoever will stop you.
If you cannot read scores or you do not know the fundamentals of harmony then AMC probably is of little use for you. However, composing is something that can be learned, and it's quite rewarding. A nice and practical book about composing:
The Composers HandbookA more elaborate book about harmony and composing:
Author: Bruce Cole
Publisher: Scott & Co
Harmonic Practice in Tonal MusicOn-line several smaller or bigger tutorials can be found, e.g. about chords and chord-progressions:
Author: Robert Gauldin
Publisher: W.W.Norton & Company
www.rpsoft2000.com/rps_musicinfo.htm