I found a few more mistakes in v2.1 relating to the calculation of various cue points (details are in the script if you’re interested), which this new v2.2 corrects.
Please let me know if you find any bugs in v2.2 or have any suggestions for more (more?!!) features.
Here’s a thought, Cad - and another great use of the EndType values - When you’ve got a Voicetrack coming out of a song that fades, how about bringing the StartNext of that track forward by 10s (for instance) ? ie: It’ll then allow the DJ to “talk down” the fade of the song. If the overlap of the song crashes with the intro of the next item - the script would then adjust the FadeOut accordignly. Also, is it safe to assume that a Voicetrack can start at the OutoMarker ? If so, the StartNext on the fading song can be placed there, too
I realise this doesn’t help those situations where levels may need to be adjusted - but from a timing point-of-view, it’s worth a thought :-\
Charlie, thanks as always for your insightful thoughts!
I have been already been wrestling with the ‘talk under’ issue, if you will, for some days. I think the only way it could work would be to develop a new set of Ending Types for songs. Let me have a further think and try out a few concepts, and I’ll get back to you soon.
My present thoughts involve new Types like:
u (for talkunder), defaulting as you say to setting the song’s StartNext to the current Outro, if that’s defined (and what to do if it isn’t?);
ufn [e.g. uf5.5] (for talkunder n to fadeout), which places the StartNextn seconds before (i.e. less than) the song’s existing FadeOut point (or CueOut or Duration, depending on which if any exists ;));
usf (for talkunder standard fade), which would mean do the same as u and also set a ‘pre-set’ FadeDuration and fade delay time (from Outro point), both specified as constants within IVP (subject to having ‘enough’ of the song left to do that, and what do to if there isn’t?);
ulf (for talkunder, long fade) mean do the same as u and also change FadeDuration to:
current FadeOut (after setting the FadeOut as shown in your diagram) - Outro + FadeDuration (or global fade duration, if none in the item).
These would all be specified in the song items and not the voicetracks (think about it!).
Does that sound like a good starting point?
Quite a lot of code to add to do all that, unfortunately … :-\ so don’t hold your breath. ;D For a start, I’ll have to check for each song that has one of the ‘talkunder’ Ending Types that its following item in the Playlist is a voicetrack. This is sort of the exact opposite of how the code presently works, so fundamental changes may be needed. There may also be unwanted interactions with some of the present processing of o codes. I’ll start prodding around under the manholes in a while and see how I get on.
I feel that this will warrant a v3.0 if and when I get it working to my exacting and nit-picking satisfaction.
The extra EndTypes seems fair enough - But even I am a bit lost with regards to all these various letters and meanings Those values would are ideal when there are various tagging schemes in operation - However, I feel that the Outro marker was designed to indicate a safe “talkout point” for a DJ to talk and not ruin a song. AudioEnhanceDPS has an Outro feature but it’s not visible during playback - It just allows a Dry or Tracked item to play over the end of a song. Musical elements that would clash with the tempo are played at the usual Segue point. Even more confusing - It has a DropStart marker that is used at the end of a song to indicate when the music part has finished ie: when it’s safe to layer a song intro over the end to produce a slick mix (the end of “Thriller” is a good example of this).
Anyway, back to the script! My own personal belief is that the Outro marker (if set) is a safe point for DJs to talk - so the script can use that as a starting point. If not found - it can set the StartNext marker 10s prior to the FadeOut point.
Sorry if the codes confused you! I’m a programmer by trade (see enhanced sig. below), and us programmer johnnies tend to think of all the possibilities that the user might need, even if they don’t know yet that they will need them ;). Then we work down from there: much easier than being forced to retro-fit the ‘extra’ options that ‘suddenly’ appear during testing ;D.
But I digress …
I came up with the extra options/codes because almost no-one has a perfect, fully-tagged library. The extra codes are mainly workarounds for that so I will junk most of them, but I will keep ulf to give the different effect of a really LONG SLOW fadeout under voice (I’m Not In Love by 10cc would be a good example). I’ll draw a diagram later to illustrate this and post it here.
Also, your suggested 10s ‘default’ used if no Outro exists would of course be a constant in the program, which the user can change to their preferred value. As Torben says: ‘This is mAirList—everything is configurable!’ That’s a philosophy I totally agree with, and try to maintain within IVP.
I have things to do right now, but will try to spend some time working on this later.
I have been mulling over the best way to add ‘talkunder’ capability to IVP, and I’ve decided to implement it as a second pass (new and separate ‘big loop’) through the Playlist.
After much thought, it became obvious that:
trying to do both ‘talkover’ and ‘talkunder’ in the same ‘big loop’ would take an impractical and unwarranted amount of effort, and
it’s much MUCH easier to automate the ‘talkunders’ if all the ‘talkovers’ are already set, and
a new ‘big loop done afterwards’ means that all the existing ‘overlays into song ramps’ code stays unaltered and separate (if it ain’t broke, don’t fix it ;)).
I’ll see if I can spare some time this weekend to make a start on this, because I think we are really ‘on to something’ here. With everyone else’s help and guidance, we should end up with a very capable and configurable ‘Rolls Royce’ of voicetracking show prep. scripts!
I’m hoping that once we have the finished article, Torben may consider adding IVP to the mAirList distribution package. I really do believe the finished IVP will be a powerful, useful, and reliable workhorse for almost every mAirList user who works with any kind of voicetracks. That’s what I’m trying to write, anyway! And being me, yes I will write a full user manual, probably in Word DOC format (if anyone knows a good genuinely free forever Word-DOC-to-PDF utility, please let me know!).
All of the internals are already done and work fine. The only problem that remains is that writing a (user-friendly) GUI for editing the envelopes will be a lot of work.
Happy to discuss ideas for Envelope GUI by PM if you wish. Much depends on whether it is internally a ‘time point’-based system or a ‘slope/gradient’-based system. I am of course more interested in the exposed interfaces for scripting purposes!
I am also assuming that the Envelope is a Property of an Item and therefore that all Players/Cartwall Players will effectively ‘reset’ to standard 100% gain when an ‘enveloped’ track fades out or hits EOF?
I posted this example a while back - but here’s a reminder. This is the editor from BCX3. Double-clicking a song in a Playlist will open this window and allow you to adjust overlap to the next item (default is based on audio or the cue point - whichever is set). You can also import a voicetrack that will duck the 2 songs, or, record a voicetrack whilst hearing the outgoing track and you can start the next one manually - RCS call this “real feel” voicetracking as you can hear the song (and even sing along!) as you record.
You can click the little green circle to adjust the fade-out point. The red circle can also be dragged to shorten/lengthen the fade-out period. Note the dotted line on the Red Hot Chili’s song - this shows the Intro Marker (where the voicetrack ends). The reset button reverts the segue back to cue markers (and deletes the VT).
I think if something like this were to appear in mAirList - it should be simple shapes with colours to denote ramp/outro/fade etc (thereby following the ProgressBar skin ini settings).
For what it’s worth, BCX is also written in Delphi.
Sure, it should look something like that. But GUI design and programming is not the favorite part of my work
All playlist items capable of envelope processing implement an additional interface named “IVolumeEnvelope” with a method “GetVolumeEnvelope” which returns an “IEnvelope” interface to the envelope data, which is in fact time point based. Here’s the current definition:
IEnvelope = interface ['{5E0A29EA-EBCB-4416-B6B5-D2141CCEE92E}']
function Add(iPosition: int64; iValue: single): integer;
procedure Assign(iValue: IEnvelope);
procedure Clear;
procedure Delete(iIndex: integer);
function GetCount: integer;
function GetPosition(iIndex: integer): int64;
function GetValue(iIndex: integer): single;
function GetValueAtPosition(iPosition, iDuration: int64): single;
end;
As you see, it’s basically an ordered list of “time point/volume value” dB pairs. The last function is used by the playback routines in order to determine the value at a given position.
So if you want at item to fade in during the first five seconds, you’d write:
var env: IEnvelope;
begin
env := IVolumeEnvelope(pi).GetVolumeEnvelope; // pi is some IPlaylistItem;
env.Add(0, -1000); // almost minus inifinity
env.Add(50000000, 0); // 0dB again at 5s
end;
I am also assuming that the Envelope is a Property of an Item and therefore that all Players/Cartwall Players will effectively 'reset' to standard 100% gain when an 'enveloped' track fades out or hits EOF?
The envelope and the fading are completely independent from each other. The envelope will still be processed while the item fades out, with the effects adding up.
I tried out the script doing a few one hour shows and am really impressed - it works out really nicely.
This could just be the way I’m doing it, but it feels like on some songs (Call the Shots by Girls Aloud, for example) even though the ramp point is correct, the VT doesn’t sound great (against what seems to me like a fairly loud intro). Where the intro is quieter and builds up it’s spot on.
Firstly, thanks for all the suggestions for PDF creators. I think I’ve tried cutePDF before and couldn’t get Ghostscript to work to support it. I have also tried OpenOffice and I didn’t manage to get it to install, so it’s ‘no’ to that as well (and anyway I have a legit copy of MS Office2003 including Access!). But I’ll get there.
Torben: thanks for the info about envelopes, I look forward to being able to try that out! And personally, I like designing GUIs!
Jimradio: thanks for the compliments! The relative level thing is something Charlie D. has mentioned before and as you say, on some tracks it’s not enough to just ‘do the overlap’ as IVP does at present. I will be able to add proper ‘ducking’ once that’s available in mAirList v3.0. Until then, maybe using a ‘special’ player for voicetracks, running into a separate desk channel, would work? You could then set the desk ‘voicetrack’ fader 6dB or so higher than the desk ‘music’ fader: not ideal, but Charlie has had some success with a method similar to this.
Charlie: The BCS editor looks similar to the one in Myriad and not unlike the ‘general’ envelope editor in SAMBroadcaster. I agree that something similar to that (even without the WAV shapes?) would be a good option to have.
RANT WARNING! (Sorry, but the audio editor idea REALLY gets me annoyed! >:()
I know that there will always be some people who want an audio editor program built in to their playout software, but I DO NOT, for these obvious reasons:
I would prefer Torben to work on mAirList and not on his own version of Adobe Audition (aka CoolEditPro). Even the people who make Myriad don’t bother doing writing their own audio editor: if you buy a copy of Myriad, they bundle a copy of Audition with it!
I do NOT understand why an audio editor needs to be ‘built in to’ ANY playout program. Is it really beyond the intelligence and capability of everyone here to open and use ANOTHER program (shock horror!) as well as their playout program, and then drag the resulting file into their playlist?
I want to choose the audio editing software I use, and I do not want to be ‘forced’ to use one particular audio editor because it is the one built in to a product.
If you really can’t afford to buy audio editing software, there are several excellent free products available. One of the best-known is Audacity. If you need to edit MP3 files directly, use the (also FREE!) mp3DirectCut, which edits MP3 files without any conversion. You can probably also find several perfectly decent audio editing programs on PC magazines’ cover CDs/DVDs of ‘giveaway’ software.