---
name: "midicopy"
section: "1"
platform: "linux"
package: "abcmidi"
version: "2026_10_09-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/midicopy"
---

# midicopy(1)

Copy selected track, channel, time interval of a MIDI file to another MIDI file

## NAME

midicopy - Copy selected track, channel, time interval of a MIDI file to another MIDI file

## SYNOPSIS

**midicopy** \[**-ver**\] \[**-trks** *n1,n2,..*\]    \[**-xtrks** *n1,n2,..*\]    \[**-xchns** *n1,n2,..*\]    \[**-chans** *n1,n2,...*\]    \[**-from** *n (in midi ticks)*\] \[**-to** *n (in midi ticks)*\]    \[**-fromsec %f** *n (in seconds)*\] \[**-tosec** *n (in seconds)*\]    \[**-frombeat %f** *n (in beats)*\] \[**-tobeat** *n (in beats)*\]    \[**-replace** *trk,loc,val*\] \[**-tempo %n**\] \[**-speed %f**\]    \[**-drumfocus** *n m\] \[***-mutenodrum \[%d\]***\]    \[***-setdrumloudness** *n m\]    \[***-focusontrack** *n1,n2,... (from 1)\]    \[***-focusonchannel** *n1,n2,... (from 1)\]    \[***-attenuation** *n\]    \[***-nobends***\]    \[***-indrums** *n1,n2,...\]    \[***-xdrums** *n1,n2,...\]    \[***-onlydrums***\]    \[***-nodrums***\]    \[***-transpose** *n (semitones)\] input.mid output.mid*

## DESCRIPTION

**midicopy** *is used to copy part of a MIDI file to another MIDI file. You can select* *a particular time interval, particular channels, and particular tracks* *or any combinations. If one or both of the run time parameters -from or -to* *are included, the program returns the playing time in seconds of the* *output file.  Midicopy was developed by Seymour Shlien from the* *midifilelib distribution available from* *http://www.harmony-central.com/MIDI/midifilelib.tar.gz*.

## OPTIONS

- **-ver**

  *prints version number and then exits*

- **-trks n1,n2, etc**

  *Selects the tracks to be copied where the track numbers start* *from 1.  If more than one track is specified, they should be separated by* *commas. You should always copy track 1 since by convention it contains* *information pertinent to all the other  tracks. By default all tracks* *are copied unless you specify particular tracks using this run time* *parameter.*

- **-xtrks n1,n2, etc**

  *Lists the tracks to exclude from copying. All other tracks are copied.* *This option does not work in combination with -trks.*

- **-xchns n1,n2, etc**

  *Lists the channels to exclude from copying. All other channels are copied.* *This option does not work in combination with -chns.*

- **-chns n**

  *Like above, it specifies the MIDI channels to be copied. By default* *all channels are copied. Channel numbers also start from 1.*

- **-from n**

  *The program will copy all MIDI commands starting from midi pulse* *number n. By default it will start from time zero or the beginning* *of the MIDI file.*

- **-to n**

  *Stops copying all events after midi pulse number n. By default* *the file is copied to the end.*

- **-frombeat n**

  *The program will copy all MIDI commands starting from quarter beat* *number n. By default it will start from time zero or the beginning* *of the MIDI file.*

- **-tobeat n**

  *Stops copying all events after quarter beat number n. By default* *the file is copied to the end.*

- **-fromsec n**

  *The program will copy all MIDI commands starting from time n*  *in seconds.*

- **-tosec n**

  *Stops copying all events after time n in seconds. These two* *options (-fromsec and -tosec) do not work accurately if the* *MIDI file has more than one tempo command. Only the first* *one is used for converting seconds into MIDI pulse units.* *It is therefore preferable to use the -from and -to options.*

- **-replace trk,loc,val**

  *This option should be used alone. Midicopy will copy the entire* *file verbatim except it will replace a byte by val, where the* *byte is located in the specified track (trk) and specified position* *(loc). Commonly this function is used for changing a particular* *MIDI program number (instrument) associated with a channel.* *You need to know the byte count in the track of that parameter* *in order to use this function,*

- **-tempo quarter notes/minute**

  *All tempo indications in the midi file will be replaced with* *the above value.*

- **-speed factor**

  *All tempo indications in the midi file will be multiplied with* *this factor. Values greater than 1.0 will speed up the music while* *lower values slow the music. The factor is a floating point value.*

- **-drumfocus drum-code excluded\_drum\_velocities**

  *The selected drum line (specified by the drum-code pitch value) is* *highlighted by reducing the loudness of all other drum lines to* *the excluded\_drum\_velocities value. The drum-code value must* *be in the range of 35 to 81 inclusive.*

- **-mutenodrum \[level\]**

  *All channels which are not 9 (drum channel) are attenuated to the* *given level. If level is not specified, it is assumed to be zero.*

- **-setdrumloudness n m**

  *where n is between 35 to 81 inclusive and m is the loudness between* *0 and 127. The loudness of all instances of drum n are changed* *to m.*

- **-focusontrack n1,n2,...**

  *The velocities of notes in all tracks except n are attenuated.*

- **-focusonchannel n1,n2,...**

  *The velocities of notes in all channels except n are attenuated.*

- **-attenuation n**

  *Specifies the amount the note velocities are reduced by either* *-focusontracks or -focusonchannels. Current default is 70.*

- **-nobends**

  *Suppresses all channel pitchbend commands.*

- **-indrums n1,n2,...**

  *Only allow percussions with codes n1,n2,...*

- **-xdrums n1,n2,...**

  *Exclude the percussions with codes n1,n2,...*

- **-onlydrums**

  *Only copy the percussion channel.*

- **-nodrums**

  *Copy all channels except the percussion channel.*

- **-transpose n (semitones)**

  *Transpose pitch for all channels except the percussion by n semitones.*

## EXAMPLE

**midicopy.exe -trks 1,5 -from 2669 -to 8634 uzicko.mid fragment.mid** *Midicopy will copy tracks 1 and 5 starting from midi pulse position* *2669 and ending at MIDI pulse position 8634.*

## SEE ALSO

*abcmtex*(1), [*abc2abc*(1)](/abc2abc/1.md), [*abc2midi*(1)](/abc2midi/1.md), [*midi2abc*(1)](/midi2abc/1.md) *,*yaps*(1)*

## AUTHOR

*This manual page was written by Seymour Shlien.*

## VERSION

*This man page describes midicopy version 1.40 from August 11 2024.*
