Sinus' Branch of Impulse Tracker to AGI Sound: Difference between revisions
No edit summary |
first draft |
||
| Line 30: | Line 30: | ||
<blockquote> | <blockquote> | ||
[[Adam Skawiński]]'s branch of [[Nat Budin]]'s [[Impulse Tracker to AGI Sound]] Perl script adds support for | [[User:Sinus|Adam 'Sinus' Skawiński]]'s branch of [[Nat Budin]]'s [[Impulse Tracker to AGI Sound]] Perl script adds support for noise channel and more input formats (now: IT, MOD and MIDI), as well as some quality-of-life options. | ||
The [https://www.perl.org/ Perl language runtime] is required to run. Input music files may be created with [https://www.lim.com.au/ImpulseTracker/ ImpulseTracker], [https://openmpt.org OpenMPT] or any MIDI editor. | |||
</blockquote> | </blockquote> | ||
<div class="Quote"> | <div class="Quote"> | ||
| Line 55: | Line 48: | ||
==<br /> Features == | ==<br /> Features == | ||
<blockquote> | <blockquote>Input formats: | ||
* < | * Impulse Tracker (.it) | ||
</blockquote> | * Protracker (.mod) - basic support only, no tempo support yet | ||
* MIDI (.mid) - input needs to have monophonic tracks or channels, no tempo support yet | |||
Options: | |||
* <code>--channels x,x,x,y</code> - select input channels. Default is <code>--channels 1,2,3,4</code> to output first four channels, with the last being used as noise. <code>--channels 1,2,3</code> would simply omit the noise channel. Midi channels are numbered from 0. | |||
* <code>--tempo-exact</code> - force exact tempo, at the cost of even playback. AGI engine plays using 1/60s ticks, so any playback must either use equal note lengths (at the cost of a different BPM from the original - by default), or try to match the original's BPM exactly by using varied note lengths. MIDI conversion uses exact tempo matching only. | |||
* <code>--auto-drum-offs n</code> - automatically terminate notes on the noise channel after <code>n</code> ticks. Useful when converting input files that use short samples and don't bother terminating them, which would turn into long noise notes in AGI. | |||
* <code>--instr-note x y</code> - force instrument <code>x</code> to play only note <code>y</code> . Useful to force a drum-like instrument to play only valid AGI drum notes. Typical notes are 13 (high noise), 14 (middle noise) and 15 (low noise). Combined with <code>--channels</code> to properly map an input channel to the noise output, and <code>--auto-drum-offs</code> to make output drums shorter, this option can turn a typical "rhythm channel" in the input into proper noise channel output for AGI. | |||
* <code>--instr-shift x y</code> - shift (transpose) instrument <code>x</code> by <code>y</code> semitones. Use when input samples were recorded in a weird pitch, and notes in the input were written to match that. Or, use +12 or -12 to transpose by an octave.</blockquote> | |||
==<br /> Requirements == | ==<br /> Requirements == | ||
| Line 69: | Line 70: | ||
<blockquote> | <blockquote> | ||
* 0.2.2 | * ''0.2.1: Added recognizing MOD, S3M and XM modules, and MIDI files. They're not (yet?) supported, but recognized.'' | ||
* 0.2. | * ''0.2.2: Experimental option --channels added'' | ||
* ''0.2.3: Tempo mode added: --tempo-exact'' | |||
* ''0.2.4: Auto drum note-offs added: --auto-drum-offs 1/2/3...'' | |||
* ''0.2.5: very basic MOD and MIDI support added'' | |||
* ''0.2.6: --auto-drum-offs now use AGI ticks for scale, not rows'' | |||
* ''--instr-drum 1 13 - remap IT/MOD instrument 1 to drum note 13 (13,14,15 are noises, 1,2,3 are buzzes)'' | |||
* ''0.2.7: --instr-drum changed to --instr-note, and'' ''# --instr-oct to --instr-shift'' | |||
</blockquote> | </blockquote> | ||
Revision as of 09:59, 29 May 2025
Version 0.2.3
Author: Adam Skawiński and Nat Budin
2025
| Latest Version: | 0.2.3 | ||
|---|---|---|---|
| Release Date: | 2025-05-19[1] | ||
| Company: | Template:N/A | ||
| Development Status: | {{{DevStatus}}} | ||
| Publication Status: | Published | ||
| Developer(s): | Adam Skawiński, Nat Budin | ||
| Interface: | CLI | ||
| Language: | Perl | ||
| Open Source: | Open | ||
| Source Availability: | Yes | ||
| License: | None | ||
| Type: | Template:FanAGISoundConverter | ||
| Relevant Engine: | AGI2 | ||
| Platform: | Windows, Linux | ||
| Localization: | English | ||
| Website: | https://github.com/SinusPi/any2agi | ||
A.K.A.
- ANY2AGI
Description
Adam 'Sinus' Skawiński's branch of Nat Budin's Impulse Tracker to AGI Sound Perl script adds support for noise channel and more input formats (now: IT, MOD and MIDI), as well as some quality-of-life options.
The Perl language runtime is required to run. Input music files may be created with ImpulseTracker, OpenMPT or any MIDI editor.
On the fourth channel, every even/odd octave defines noise/pattern, and every 4th note pitch defines frequency. C1=C3=C5=E1=E3=G#1=G#3. Play C1 C#1 D1 D#1 C2 C#2 D2 D#2 for a full range of sounds. Just to clarify: there are no "drums" in IT, it's not MIDI, in trackers you define instruments as you see fit. But for this script, instruments don't matter. First three channels of the IT files are voices, the fourth channel is noises.
Features
Input formats:
- Impulse Tracker (.it)
- Protracker (.mod) - basic support only, no tempo support yet
- MIDI (.mid) - input needs to have monophonic tracks or channels, no tempo support yet
Options:
--channels x,x,x,y- select input channels. Default is--channels 1,2,3,4to output first four channels, with the last being used as noise.--channels 1,2,3would simply omit the noise channel. Midi channels are numbered from 0.--tempo-exact- force exact tempo, at the cost of even playback. AGI engine plays using 1/60s ticks, so any playback must either use equal note lengths (at the cost of a different BPM from the original - by default), or try to match the original's BPM exactly by using varied note lengths. MIDI conversion uses exact tempo matching only.--auto-drum-offs n- automatically terminate notes on the noise channel afternticks. Useful when converting input files that use short samples and don't bother terminating them, which would turn into long noise notes in AGI.--instr-note x y- force instrumentxto play only notey. Useful to force a drum-like instrument to play only valid AGI drum notes. Typical notes are 13 (high noise), 14 (middle noise) and 15 (low noise). Combined with--channelsto properly map an input channel to the noise output, and--auto-drum-offsto make output drums shorter, this option can turn a typical "rhythm channel" in the input into proper noise channel output for AGI.--instr-shift x y- shift (transpose) instrumentxbyysemitones. Use when input samples were recorded in a weird pitch, and notes in the input were written to match that. Or, use +12 or -12 to transpose by an octave.
Requirements
Version History
- 0.2.1: Added recognizing MOD, S3M and XM modules, and MIDI files. They're not (yet?) supported, but recognized.
- 0.2.2: Experimental option --channels added
- 0.2.3: Tempo mode added: --tempo-exact
- 0.2.4: Auto drum note-offs added: --auto-drum-offs 1/2/3...
- 0.2.5: very basic MOD and MIDI support added
- 0.2.6: --auto-drum-offs now use AGI ticks for scale, not rows
- --instr-drum 1 13 - remap IT/MOD instrument 1 to drum note 13 (13,14,15 are noises, 1,2,3 are buzzes)
- 0.2.7: --instr-drum changed to --instr-note, and # --instr-oct to --instr-shift
Development Status
Adam Skawiński added support for 4-channel output (2025).
Options
To convert music, type this from the command line:
perl it2agi <name>.it
The script will produce a file called "<name>.ags".
Usage
To convert music, type this from the command line:
perl it2agi <name>.it
The script will produce a file called "<name>.ags".
Options
To convert music, type this from the command line:
perl it2agi <name>.it
The script will produce a file called "<name>.ags".
Download
Download from here:
- https://github.com/SinusPi/any2agi SinusPi/any2agi on GitHub]
Known issues
- IT2AGI doesn't (yet) support changing tempo or speed in the middle of the song. Don't try this, as it will be cruelly ignored.
- Volumes aren't supported either, yet. They will be in the next version. For now, everything is played full blast.
- Finally, AGI is very limited in what it can do. If AGI doesn't support something, IT2AGI most likely doesn't either.
Credits
References
Also See