Author Topic: Some new/modern Music Tracker/MODule formats support for AGS?  (Read 577 times)

Hey everyone!

Having recently more time than usual on my hands, I've decided to indulge in some Point'n'Click game making.
I am primarily a computer/synth musician though, and one thing I'll be interested in is the BGM aspect of any game I may come up with eventually.

I'm pleased that AGS already supports MOD and XM formats (to my knowledge its only 2 options — other than MIDI — allowing a music piece to seamlessly loop all or parts of it, thanks to the power of these pattern-based formats. Something you can't do with any usual audio format).
However, I'd be EVEN more pleased if support for some more powerful tracker formats was available.

I'm thinking of the IT (as in "Impulse Tracker") format (very old too — about 25 years old today! — but still quite a bit better and advanced than the XM format), and the XRNS format from the modern tracker Renoise — which I use.

I don't know whether the IT format could be easily supported — I only assume that it shouldn't be much more trouble to add than XM was...?

As for Renoise's format XRNS, it might actually be the easiest to support, given its specs: an XRNS is a zip file.
Inside the zip file are the samples/instruments used by the music piece (themselves stored in WAV, OGG, or other traditionnal audio format) and an XML file (the actual musical "score": pattern composition and structure of the music) with info pointing to the samples. Pretty straightforward and open, so I imagine its support should be rather easy to implement, right? Let alone the Renoise staff & community are extremely active and would no doubt be willing to help in the matter.


Now, maybe these formats are already available through some plug-in/add-on that I'm not aware of? Please let me know about it if that's the case...

Otherwise, if that's okay, I'd very much like to officially suggest the support for any (or both!) of these 2 audio formats: IT (Impulse Tracker) and especially Renoise's XRNS (being the more powerful/flexible and modern of all pattern/tracker-based music formats).

These 2 formats (particularly XRNS) would allow state-of-the-art synthesizers to be used to compose music for AGS games, and as I said above, their pattern structure is a perfect fit for endlessly playing (=in a seamless loop) background music in video games — as opposed to MP3/WAV/OGG etc. which, as conventional audio, don't allow any complex looping.

I hope my humble request will prove worthy of consideration for the staff and devs.
Thank you all in any case for taking the time to read. Cheers!

MOD and XM formats (to my knowledge its only 2 options — other than MIDI — allowing a music piece to seamlessly loop all or parts of it, thanks to the power of these pattern-based formats. Something you can't do with any usual audio format).

OGG and WAV can loop seamlessly, though. Unless you mean effects such as the tail of a reverb getting cut off at the end of a loop, but there are workarounds for that.

In any case, using the PlayQueued function you can create a "playlist" and play the loops you want in the order you want, same as you would in a tracker.


These 2 formats (particularly XRNS) would allow state-of-the-art synthesizers to be used to compose music for AGS games, and as I said above, their pattern structure is a perfect fit for endlessly playing (=in a seamless loop) background music in video games — as opposed to MP3/WAV/OGG etc. which, as conventional audio, don't allow any complex looping.

I'm assuming that by "state-of-the-art synthesizers" you mean VST. I'm not a developer, but I'm guessing that introducing support for VST instruments would be way more complex than simply reading a tracker file which only has a bunch of wav samples and the "sheet music", so to say (info on what notes are being played, at what tempo, by which instruments, etc). This would also mean that the VST instrument itself would have to be included in the file so that the same sounds could be played in other people's systems (which would be illegal, since unless you're using free plugins/instruments you would not be allowed to re-distribute them). So even if support for XRNS was developed, you would not be able to use any VST plugins. But like I said, I'm not a developer, so maybe I'm missing something?


Hey Laura!

Thanks for an (enlightening) reply!


I'll take things one by one:

- I'm not sure what you mean by OGG/WAV being able to loop seamlessly... Of course a piece of audio (in whatever format) can be made to loop without any latency or "blank" time of silence at the looping point. Yet that doesn't play any role in actually making the audio file a perfectly seamless music loop to the ear, does it?
Also I was refering to more complex types of looping that a tracker module permits, eg. positioning a looping start point which is NOT the actual start of the song (allowing for instance to have an intro of any sort in it, but then being able to skip it to loop directly — and endlessly until switching scenes/songs in the game— to any moment inside the song).

Also your mentioning workarounds to prevent sounds being cut off at loop point with an audio file intrigues me, and I'd like you to elaborate if you will (unless this opens a very lengthy exposee that is — in which case you could maybe point me somewhere relevant to that subject?).


- I wasn't aware of the ability in AGS to create a playlist, and that is an interesting feature for sure.
Still, I'm not clear that this renders the support for modern tracker formats entirely useless, since it seems that, in many cases, having the module format take care of the playlist order and possible loops would be both faster and more convenient than managing it all inside AGS, don't you think?


- I indeed meant VSTs (precisely VSTi for instruments, and VST for effects), since software is the future for powerful modern synthesizers (in that no current hardware synth/effects can claim anymore to be as powerful and feature-comprehensive as the most powerful VSTs, plus the audio quality is soon getting on par too).
You're absolutely correct that supporting VST would mean mandatorily including the actual instruments used in a song, which obviously would be as ridiculously complex and inadequate as it would be pointless for a platform such as AGS.
I was in fact exclusively refering to the Renoise (Tracker) XRNS format, which uses SAMPLES (hence audio format files, NOT VSTs), but I realize my mentioning modern synths was confusing: the way you use a tracker such as Renoise is you in fact COMPOSE and PERFORM your music using VSTi synthesizers, _BUT_ when saving to the XRNS format, ALL VSTi instruments can then be rendered AS SAMPLES.
Which means there is of course no need form then on for any VST support whatsoever with that format: as mentioned it's only a matter of supporting an open XML file structure + audio samples in classic audio formats associated to it to play back the music.


Mmmh, I hope I explained it all abit clearer there, but I'm not so sure...
Anyway, I'm looking forward for your (and any other's) further input on the topic.

Thanks again for your time answering!
« Last Edit: 31 Aug 2019, 13:00 by Deist »

Curious, if you want to let the module handle everything, why not just rendering to ogg and playing the ogg file?

- I'm not sure what you mean by OGG/WAV being able to loop seamlessly... Of course a piece of audio (in whatever format) can be made to loop without any latency or "blank" time of silence at the looping point. Yet that doesn't play any role in actually making the audio file a perfectly seamless music loop to the ear, does it?

Hey Deist, I'm not sure I understand what you mean here by "a perfectly seamless music loop to the ear". Could you elaborate? What I specifically meant is yes, you can make an audio segment loop without any clicks or blanks (this, by the way, is not possible with mp3, which is why I mentioned only ogg and wav... mp3 files ALWAYS have some miliseconds of silence at the beginning, thus you can't really loop them), which in turn allows you to either a) have a long piece that loops perfectly when it reaches the end, thus giving the player a perfectly seamless background music, or b) have a series of loops that will segue into each other seamlessly, creating a "composition" or a playlist like I mentioned before.


Also I was refering to more complex types of looping that a tracker module permits, eg. positioning a looping start point which is NOT the actual start of the song (allowing for instance to have an intro of any sort in it, but then being able to skip it to loop directly — and endlessly until switching scenes/songs in the game— to any moment inside the song).

You can also do this with wavs or oggs inside AGS. If you have an intro and then a fragment that you'd like to loop endlessly until something else happens then you'd simply do something like:

Code: Adventure Game Studio
  1. mymusic = aIntro.Play(eAudioPriorityNormal, eOnce);
  2. aLoop3.PlayQueued(eAudioPriorityNormal, eRepeat);
  3.  
(having previously defined mymusic as a global Audiochannel* type variable)

Also your mentioning workarounds to prevent sounds being cut off at loop point with an audio file intrigues me, and I'd like you to elaborate if you will (unless this opens a very lengthy exposee that is — in which case you could maybe point me somewhere relevant to that subject?).

In a nutshell, the easiest way would be to take the initial 2 bars of your loop and dump them to wav, then split that in half. The first half would be your "intro" and would only be played once, and the second half, which contains the trailing effects from the first half, would be the one you would loop (and if you plan on fading the music in, you wouldn't even need an intro.)


- I wasn't aware of the ability in AGS to create a playlist, and that is an interesting feature for sure.
Still, I'm not clear that this renders the support for modern tracker formats entirely useless, since it seems that, in many cases, having the module format take care of the playlist order and possible loops would be both faster and more convenient than managing it all inside AGS, don't you think?

Depends, I guess? Given that in the end you're always going to have a looping section somewhere, I personally find it easier to compose everything in my DAW of choice, dump the whole composition to OGG, and loop that. If there's e.g. an intro, I'll split that into its own separate OGG and then loop the rest, pretty much like I did above. But again, that's just my personal preference.


- I indeed meant VSTs (precisely VSTi for instruments, and VST for effects), since software is the future for powerful modern synthesizers (in that no current hardware synth/effects can claim anymore to be as powerful and feature-comprehensive as the most powerful VSTs, plus the audio quality is soon getting on par too).
You're absolutely correct that supporting VST would mean mandatorily including the actual instruments used in a song, which obviously would be as ridiculously complex and inadequate as it would be pointless for a platform such as AGS.
I was in fact exclusively refering to the Renoise (Tracker) XRNS format, which uses SAMPLES (hence audio format files, NOT VSTs), but I realize my mentioning modern synths was confusing: the way you use a tracker such as Renoise is you in fact COMPOSE and PERFORM your music using VSTi synthesizers, _BUT_ when saving to the XRNS format, ALL VSTi instruments can then be rendered AS SAMPLES.
Which means there is of course no need form then on for any VST support whatsoever with that format: as mentioned it's only a matter of supporting an open XML file structure + audio samples in classic audio formats associated to it to play back the music.

Thanks for clarifying, I was sure I was missing something. That certainly makes a lot more sense, but wow, that's a weird format :-D So out of curiosity, how exactly are the VSTis rendered as samples? Does the whole VST track get dumped to a wav file? Or is each note converted into a separate sample?


« Last Edit: 31 Aug 2019, 13:37 by Laura Hunt »

As far as I know Impulse Tracker format is already supported, as the underlying library already supports it:

Quote from: https://adventuregamestudio.github.io/ags-manual/MusicAndSound.html
AGS is able to play the following types of audio file: OGG, MP3, MIDI, WAV (uncompressed), MOD, XM, IT, S3M and VOC.

There are quite a few audio issues with the engine, some related to timing, some format specific. Tracker style playback does work around some of these and would also be way more efficient for dynamic layering. At the moment, I don't think you can achieve the same effect as tracker playback using the in-build audio channels.

The engine itself is in flux, since the underlying multimedia libraries it runs are are so old, but I'll add a feature suggestion for XRNS support.

As far as I know Impulse Tracker format is already supported, as the underlying library already supports it:

Quote from: https://adventuregamestudio.github.io/ags-manual/MusicAndSound.html
AGS is able to play the following types of audio file: OGG, MP3, MIDI, WAV (uncompressed), MOD, XM, IT, S3M and VOC.
The engine itself is in flux, since the underlying multimedia libraries it runs are are so old, but I'll add a feature suggestion for XRNS support.
Thank you Morgan for that info, as well as the feature suggestion add!
It is great to know that IT support (and even its S3M ancestor!) are already supported as well by AGS (only MOD and XM, both more limited, are mentioned in the main page feature-list).

@eri0o: When I wrote "let the module handle everything", I meant in terms of (NOT straightforward!) looping, which rendering and playing a single ogg file of the piece wouldn't permit obviously.

@Laura: "Perfectly seamless music loop to the ear" meant that you can't in fact detect by ear the precise point where the loop is taking place. Of course when we're talking about a tempo-based music piece without lingering effects like delay/reverb and such, that is easily done with rendering one or several measures of your composition in any DAW, and then looping the whole thing!

But for those other instances when there's no real tempo to speak of (say, a real ambient piece to emphasize the mood of a game part), and/or when having noticeable reverb tails on some notes (and such examples seem to me to be just as relevant — if not more — to making a game OST, right?), then using a format able to manage multiple (if necessary) start/end loop points inside the song structure is (to my knowledge) the best and most powerful/efficent way to achieve it.

(NB. Incidentally, and unless I remember it wrong, it is technically feasible to loop MP3s without any click or silence, since I believe a very select few players such as Foobar allow to do so — which of course is of no use to us in the context of AGS, but just FYI, you know...)


I still believe that, SINCE the looping start and end points (cause yes: you can have multiple of both in a single tracker module composition! ;-)) are integral part of the composing/structuring of a song in a tracker (you do that in 5 seconds chrono with a single instruction on the pattern), it is WAY simpler and faster to let the module run, with all its possible (endless or not) loop points, rather than have to manage all the looping AFTERWARDS inside AGS. Having to — subsequently to composing and rendering your music — split your compo into as many separate pieces as you want loops is a hassle, at least compared to how little effort it is when doing it inside Renoise, or any other tracker, and then rendering it in the XNRS format. Why not just let the module format of your music do it all for you? Its pattern-based structure is,  after all, intended for that very purpose!

Of course, for more interactive uses (such as for instance having specific loops play under specific situations/events/conditions of your game), then managing the playlist directly in AGS is the way to go, since in that case the game itself must have a direct impact on the order your audio fragments are played.
But otherwise, for a music piece which's supposed to play in a game scene regardless of the actions done in that scene, I see no point in having to resort to cutting your rendered audio in several pieces and REDO your playlist in AGS : all these features are already done when making your music in a tracker, internally controlled and managed by the tracker! And even for those unfamiliar with tracking and pattern-based music, that approach is so easy and intuitive that using (you may even use your piano-roll DAW of choice for doing all your composing, and then load your MIDI to Renoise + remap all your plugins, so that you only have to use the tracker for the final structuring and looping of your song and saving to the tracker format). Indeed the primary focus of trackers when they saw birth (Amiga days of yore...) was to allow non-musicians to initiate themselves to making music, so its still really fairly easy and intuitive to use, even though the scope of tracking music has expanded a lot since then.

Now I understand the solutions you mentioned using AGS itself, such as to quote your post:

"take the initial 2 bars of your loop and dump them to wav, then split that in half. The first half would be your "intro" and would only be played once, and the second half, which contains the trailing effects from the first half, would be the one you would loop (and if you plan on fading the music in, you wouldn't even need an intro.)"

...But since all of this is ALREADY DONE when I'm saving my composition in Renoise, it really feels like wasted time compared to having support for direct renoise module playback. Hence my suggesting it, since it is after all an open format (XML!) and should be rather easy to implement with real benefits (in my eyes anyway! ;-).

Same thing with looping while skipping the intro of a song:

"If there's e.g. an intro, I'll split that into its own separate OGG and then loop the rest, pretty much like I did above. But again, that's just my personal preference."

But you wouldn't have to do even that with the Renoise format supported. No splitting, no looping, no playlist in AGS. All is already done inside the tracker (and played accordingly by its format when supported). And as I said, it is rather easy to compose in another DAW and then only import all the MIDI data (notes, automation, etc.) into Renoise and remap the instruments to finalize  the song structure with looping points (which you can't save with any other DAW format as far as I'm aware).

In any case, I reckon it would be great to have the choice to go one way (AGS playlist) or the other (tracker format with internal loop point(s) management)...


"Wow, that's a weird format :-D"
I guess so, yeah... But only if (as I reckon) you're completely unfamiliar with trackers. They've been used for demos, amateur and even professional game music since more than 20 years now, and the tracking formats are more dedicated and relevant to game music than any other — obviously much less so nowadays since memory and file sizes no longer matter in most cases, certainly not for pro games anyway.


"So out of curiosity, how exactly are the VSTis rendered as samples? Does the whole VST track get dumped to a wav file? Or is each note converted into a separate sample?" Well no, the whole track is NOT dumped to a WAV — that wouldn't be too different than any other audio format (only split the song in its many tracks, but that is of no use except post-mixing...?), so you'd loose all the benefits of the tracker format. The idea of tracking is that the format ITSELF acts as a sampler, hence separates the composition/structure on one side (patterns+loop points and automation — rendred as an XML file), and the instruments (sample notes, rendered as audio) on the other.

Now you CAN convert each note to its separate sample, PER instrument. Obviously that would make for a sh*tload of samples, which would not be too appropriate most of the time in terms of total size.
What you usually do is you only dump each of your instruments at some note intervals (every octave is sometimes enough, but usually every half-octave to be safe), and the tracker engine (which IS, at heart, a sampler, and Renoise's one is mostly on par with Kontakt itself as far as rendering quality when pitch-shifting a sample note) interpolates the in-between missing notes when necessary. That is precisely what all samplers do anyway, and only very high-quality (and HUGe in size!) sampler kits (eg. Native Instruments' pianos) usually pack EVERY single note (and each at several velocity layers...).
But once again, that seems extreme and out of place for an AGS BGM, if on the other hand you want to benefit from the advantages of the tracker format (VERY small size compared to even an MP3-compressed full OST) and structure of the song internal to the format.
« Last Edit: 31 Aug 2019, 15:01 by Deist »

Perhaps the easiest demonstration is one where you can see the channels and triggers, and how the patterns are repeated. The first track here is roughly 1MB of sample data.


again, what's the use of tracker that's different from playing a prerendered ogg? Without specifics this makes no sense to me.

Here is a naive tracker I wrote in JS -> https://github.com/ericoporto/bgmjs

My learning was that the memory (RAM) and CPU requirements are not worth any space saving in storage, if I wanted to work accross systems - for any browser this meant fabricating wav data on the fly.
« Last Edit: 31 Aug 2019, 15:50 by eri0o »

But for those other instances when there's no real tempo to speak of (say, a real ambient piece to emphasize the mood of a game part), and/or when having noticeable reverb tails on some notes (and such examples seem to me to be just as relevant — if not more — to making a game OST, right?), then using a format able to manage multiple (if necessary) start/end loop points inside the song structure is (to my knowledge) the best and most powerful/efficent way to achieve it.

...or just use several channels :-D But yes, I'm being picky at this point, your method definitely makes sense in this context.

(NB. Incidentally, and unless I remember it wrong, it is technically feasible to loop MP3s without any click or silence, since I believe a very select few players such as Foobar allow to do so — which of course is of no use to us in the context of AGS, but just FYI, you know...)

(Yes, but it's only feasible because the player detects that silence and removes it in real time, but the mp3 file itself is not altered in any way, so my point still stands because you still can't loop them without using a program that's "aware" of this issue, which AGS... is not.)


I still believe that, SINCE the looping start and end points (cause yes: you can have multiple of both in a single tracker module composition! ;-)) are integral part of the composing/structuring of a song in a tracker (you do that in 5 seconds chrono with a single instruction on the pattern), it is WAY simpler and faster to let the module run, with all its possible (endless or not) loop points, rather than have to manage all the looping AFTERWARDS inside AGS. Having to — subsequently to composing and rendering your music — split your compo into as many separate pieces as you want loops is a hassle, at least compared to how little effort it is when doing it inside Renoise, or any other tracker, and then rendering it in the XNRS format. Why not just let the module format of your music do it all for you? Its pattern-based structure is,  after all, intended for that very purpose!

Because in the end, what you have playing in the background is a single looped track/composition, regardless of how you got to it. You can trigger all the different loop points and go from one place of the piece to another in real time using a tracker format file, or render the whole thing to a single mixed audio file (or yes, two in most cases if you want that intro, but rarely more).

In the end I guess we simply see the process in a completely different way. Basically, I look at AGS as if it were ACID, which also has a pattern-based workflow: I have my loops, segments, etc, which I arrange as if I was using building blocks, and my workflow for AGS is optimized for this. I'm so used to it that it's just second nature at this point!

"Wow, that's a weird format :-D"
I guess so, yeah... But only if (as I reckon) you're completely unfamiliar with trackers. They've been used for demos, amateur and even professional game music since more than 20 years now, and the tracking formats are more dedicated and relevant to game music than any other — obviously much less so nowadays since memory and file sizes no longer matter in most cases, certainly not for pro games anyway.

I used FT2 for around 8 years and recorded two demos with it ;) The only point of using a tracker for me was that my computer back then couldn't handle anything more demanding than that, but as soon as I was able to use VST instruments, a master keyboard with slider and knob automation, and real time VST effects? Bye bye tracker, hello Reason, hello Cubase  :-D Everybody has their own workflow, and personally, I wouldn't go back to using trackers even if I got paid for it. But again, personal preference!

Now you CAN convert each note to its separate sample, PER instrument. Obviously that would make for a sh*tload of samples, which would not be too appropriate most of the time in terms of total size.
What you usually do is you only dump each of your instruments at some note intervals (every octave is sometimes enough, but usually every half-octave to be safe), and the tracker engine (which IS, at heart, a sampler, and Renoise's one is mostly on par with Kontakt itself as far as rendering quality when pitch-shifting a sample note) interpolates the in-between missing notes when necessary. That is precisely what all samplers do anyway, and only very high-quality (and HUGe in size!) sampler kits (eg. Native Instruments' pianos) usually pack EVERY single note (and each at several velocity layers...).
But once again, that seems extreme and out of place for an AGS BGM, if on the other hand you want to benefit from the advantages of the tracker format (VERY small size compared to even an MP3-compressed full OST) and structure of the song internal to the format.

See, that's a compromise I don't think I'd be happy to live with either, I'm too used to instruments in which every single note has been sampled separately. Crappy interpolation is one of the worst memories I have of FT2, although I'm sure that modern trackers can handle that so much better.

tl;dr everybody does things differently, and that's great! Also, it's been great to have a bit of a nerdy music/sound conversation, but maybe I should stop hogging the thread and let the devs answer your question ;)


P.S.:
Thank you Morgan for that info, as well as the feature suggestion add!
It is great to know that IT support (and even its S3M ancestor!) are already supported as well by AGS (only MOD and XM, both more limited, are mentioned in the main page feature-list).

Ah, but you already knew this. Although 9 years makes it easy to forget that you had already asked that... ;)
« Last Edit: 31 Aug 2019, 15:45 by Laura Hunt »

You sure like to write, but you don't like being questioned, again, what's the use of tracker that's different from playing a prerendered ogg?

Here is a naive tracker I wrote in JS -> https://github.com/ericoporto/bgmjs

My learning was that the memory (RAM) and CPU requirements are not worth any space saving in storage, if I wanted to work accross systems - for any browser this meant fabricating wav data on the fly.
I'm sorry eriOo, did I offend you in any way? Did I use rude language or aggressive arguing towards you? Did you feel attacked on your own private little space because I actually had something to REPLY to whatever you said, and dared do so? Poor you...

I may sure like to write (I admit to be very verbose, but that's mostly because english not being my native language — I'm french — I tend to use para/lengthy phrasing to make sure my point go across, especially on more technical matters), but I most of all like it to keep friendly, which doesn't seem to be your way.

So the best option here will be to plainly IGNORE whatever comments you may post in that thread — starting with that one! (Incidentally, you don't even seem to grasp what I mean by "NOT straightforward looping", nor "looping structure managed internally by the format" anyway, so that'll save us both a lot of time...)


Feel free to go your way from here, and I'll go mine if that's all the same to you...
Cheerio buddy! (roll)
« Last Edit: 31 Aug 2019, 15:55 by Deist »

(Yes, but it's only feasible because the player detects that silence and removes it in real time, but the mp3 file itself is not altered in any way, so my point still stands because you still can't loop them without using a program that's "aware" of this issue, which AGS... is not.)
Absolutely right, good point.  :wink:


Quote
Because in the end, what you have playing in the background is a single looped track/composition, regardless of how you got to it. You can trigger all the different loop points and go from one place of the piece to another in real time using a tracker format file, or render the whole thing to a single mixed audio file (or yes, two in most cases if you want that intro, but rarely more).

In the end I guess we simply see the process in a completely different way. Basically, I look at AGS as if it were ACID, which also has a pattern-based workflow: I have my loops, segments, etc, which I arrange as if I was using building blocks, and my workflow for AGS is optimized for this. I'm so used to it that it's just second nature at this point!
Still, since when composing straight from the start in a tracker means the whole structure (including pattern-loops) is part of the composition process, it must necessarily be faster than composing it all in a piano-roll DAW, AND THEN, only after rendering to audio, having to decide and manage a kind of post-processing (splitting, code, etc.) for the layout of your music parts, right?

Quote
I used FT2 for around 8 years and recorded two demos with it ;)
Well, your question + "weird format" comment WERE completely misleading then, you must admit!  :wink:

Quote
The only point of using a tracker for me was that my computer back then couldn't handle anything more demanding than that, but as soon as I was able to use VST instruments, a master keyboard with slider and knob automation, and real time VST effects? Bye bye tracker, hello Reason, hello Cubase  :-D
Sure, composing based on patterns is a radically different process than doing so via piano-roll, and most people seem to prefer the latter (when in fact they even know about the former). But you're aware that everything you mention (real time VST instruments/Effects, Master keyboard, automation, etc.) and more is as much supported by Renoise as in any other DAW. The point is, to each his own of course, yet it is important to add that some things can't actually be done (at least easily) with a piano-roll DAW (and the same is true of the opposite): both format have their strengths (I myself use Live and Reaper in parallel to Renoise, depending on what I do and need). My point is, regardless of obvious preference and freedom of choice for one format or the other, trackers still are relevant nowadays — if only for a minority of composers.
And I maintain that relevance IS even greater when talking BGM for amateur Adv games! :wink:


Quote
See, that's a compromise I don't think I'd be happy to live with either, I'm too used to instruments in which every single note has been sampled separately. Crappy interpolation is one of the worst memories I have of FT2, although I'm sure that modern trackers can handle that so much better.

tl;dr everybody does things differently, and that's great! Also, it's been great to have a bit of a nerdy music/sound conversation, but maybe I should stop hogging the thread and let the devs answer your question ;)
Well, no obviously, Renoise being a pro app, the interpolation is anything but  crappy indeed. As I said, it's well reknown nowadays and has proven itself over years to be top-notch and rivals that of Kontakt or EXS24...
Still, interpolation — as HQ as it may be — still is less than the actual rendering from the original instrument, obviously.
As I said, when you're not concerned the least about file size, sampling each and every note for each and every instrument is just as feasible with a Tracker. It's just that's not really the standard way among most tracker artists...



Quote
Ah, but you already knew this. Although 9 years makes it easy to forget that you had already asked that... ;)
Ha ha ha, you got me there! You proved way smarter than I was, as indeed I SHOULD have searched through my old history here before posting! I had actually forget all about asking, as you figured! That only goes to prove that this remains something that concerns me every time I think about doing anything in AGS, right? Well, I'm obsessed, I'll admit that, but that's only because I usually mostly do music, and I've always heavily used trackers.

Ok, I wasn't expressing correctly, I am sorry. What I mean, is if you want to just play the song or if you intend to edit in real time.

Is your objective just playing the song in a game? Then it's a smaller API which is easier to write and already exists for some formats.

If your intention is to have a song be dynamic, then the amount of parameters in how dynamic it's will define how complicated or easy it's to implement.

Again, sorry for the confusion. I do need to ask, though what are the intentions of usage because that will dictate the difficulty to implement.

I know at least one dynamic tracker plugin for AGS, though I can't recall the exact name now.

Edit: also you sound reasonably excited and I projected anger from someone else onto you, which was really unfair, I really didn't want to cut your excitement. Excitement is good. Hope I didn't disturbed too much of your Saturday. Have a good day.
« Last Edit: 31 Aug 2019, 20:28 by eri0o »

Ok, I wasn't expressing correctly, I am sorry. What I mean, is if you want to just play the song or if you intend to edit in real time.

Is your objective just playing the song in a game? Then it's a smaller API which is easier to write and already exists for some formats.

If your intention is to have a song be dynamic, then the amount of parameters in how dynamic it's will define how complicated or easy it's to implement.

Again, sorry for the confusion. I do need to ask, though what are the intentions of usage because that will dictate the difficulty to implement.

I know at least one dynamic tracker plugin for AGS, though I can't recall the exact name now.

Edit: also you sound reasonably excited and I projected anger from someone else onto you, which was really unfair, I really didn't want to cut your excitement. Excitement is good. Hope I didn't disturbed too much of your Saturday. Have a good day.
(I'll gladly accept your excuses)

Now, to try and clarify my POV and intentions in asking that kind of support: as I said, I believe in a dynamic (ie. I assume by that term you mean "interactive") context — where the music must react directly to the player's actions and any events thus initiated — the tracker format is absolutely useless, as the amount of interactivity linking soundtrack to game must obviously be managed from within the game engine itself.

However, I see a point in having a modern tracker's format supported — although I'll admit it will for sure only concern a small minority of users (for the simple reason that very few people use a tracker to produce music to begin with), so yeah, it's kind of a "niche" request.

If you plan (as is usual) to have different songs play during different parts of your game (eg. to produce/emphasize their specific moods), then it is more elegant to have each song seamlessly loop, instead of fading out and restarting continuously while the player remains in that specific scene.
I see the tracker format as being especially appropriate to produce such a game soundtrack (more so than usual audio formats) since all the playlist and loop layout work for a song is already part of the composing process, and all the data for it is therefore already present in the tracker file format.

So yeah, my intentions of usage are in fact to simply let a music play (of course a different one for each game part — not talking about one single soundtrack playing for the entire game), in the very order and following the several looping paths that were laid out for the patterns while composing them in the tracker. Since that layout IS part of composing the music anyway, I see a real advantage in supporting the output format, instead of having to do that layout work again afterwards in order to have the music play as intended using classic audio formats (splitting the music in several audio files — ie. basically recreating patterns —, managing a playlist + looping some parts inside AGS itself...).

From that perspective, that's simply doing the same job twice: all that song layout info being already present in the output file of my tracker (Renoise), why have addiotional steps of converting the tracker file to plain audio, cutting it into the relevant parts, coding a playlist and looping points, etc.?
To me it would make more sense to just directly support the XML format in which Renoise already provides all that work for the music patterns to play in the desired layout.

That being said, if such support proved too difficult to implement, I'd understand the disadvantages outweight the benefit (being for only a minority of users), and I'd just do like everybody else, working with plain audio formats and a playlist. But, without being a real coder myself, I assume the XML format of Renoise is open and clear enough (+ Renoise community in general should prove as helpful as usual) for such support to be realistically easy to add...

To sum it up: different songs for different game parts, and each part endlessly looping (until the scene ends), with the possibility of more than a straightforward loop of the entire piece (eg. skipping an intro when looping). A tracker module music does that by design. A plain audio file requires additional steps to produce the same result.

I hope that did answer your question about how dynamic I want the playback to be — not so sure I was clear enough — you tell me — but it's the best I cand do to describe it I'm afraid.
« Last Edit: 01 Sep 2019, 09:32 by Deist »


To sum it up: different songs for different game parts, and each part endlessly looping (until the scene ends), with the possibility of more than a straightforward loop of the entire piece (eg. skipping an intro when looping). A tracker module music does that by design. A plain audio file requires additional steps to produce the same result.

I hope that did answer your question about how dynamic I want the playback to be — not so sure I was clear enough — you tell me — but it's the best I cand do to describe it I'm afraid.

That's essentially what iMUSE (https://en.wikipedia.org/wiki/IMUSE) was back in the day, which was the pinnacle of using built-in synth chips.
It's a musical equivalent of palette color shifting in indexed graphics. A lost art.

Stuff like that doesn't exist anymore, for various reasons.
Mainly that old hardware had limited storage space, so hardware synths were a necessity. CD kind of killed that, quite brutally. Playstation games literally played music tracks from the CD, and that was considered "high tech" and "progress" back then, compared to "obsolete" synth-on-chip implementations of 8 and 16-bit era. So instead of built-in music instrument, we got a glorified mix tape to play along with the game.  :)

Another reason is sheer convenience - it's much easier to create "normal" soundtrack music and then just play predefined variations of the same theme, than to "program" a synth. Not to mention a much larger pool of available artists - If you go the synth way, the musician has to know your synth and workflow. Otherwise, they just have to know their own instruments and workflow. This way they're also completely decoupled from the programming department, which is again convenient for scheduling and management. It's a win-win-win situation for artists, programmers and managers, with the downside being we're having movie soundtracks in games.

But, all being said, I agree with you and still think there's a huge untapped potential in this field. The gaming world has been in need of another iMUSE for a long, long time.
« Last Edit: 19 Sep 2019, 14:28 by doimus »