Audio Jungle Watermark, surely there must be an easier way!


Right, I know that this topic has been discussed before, but I really want to make a proper effort to get the attention of Envato and get them to sort this out.

I am loving AJ at the moment, makes me good money, and I love the community that they have created.


My biggest frustration is the watermark!!! I am non exclusive, so upload my tracks to other sites as well, and not one of them ask the authors to manually apply the water track and create the preview file / zipped file, e.t.c. They all have automatic ways to do it.

So I am proposing that Audio Jungle Implement Automatic watermarking on tracks and automatic zipped files

i.e. all we have to do is upload one MP3 file, and some clever computer code handles the rest. I KNOW that this can be done as many other sites have software and code that do it automatically. I also have been passed some code that will do the watermark automatically, but I do not understand enough to use it yet, sorry its so long, if someone out there can tell me how this works that would be great!!!

I know that this can be done, and would make so much more sense for everyone involved!

using System;
using System.IO;
using System.Windows.Forms;
using SoundForge;

public class EntryPoint {
public string Begin(IScriptableApp app) {

string strWildcard = GETARG(“Wild”,"*.wav");
string strOutputType = GETARG(“Filetype”,".wav");

// pick a folder to process
string strSourceDir = SfHelpers.ChooseDirectory(“Choose a folder to process all files from.”, @“c:\Audiobank”);
if (null == strSourceDir)
return “no source directory - quitting”;

// pick an output folder
string strOutDir = SfHelpers.ChooseDirectory(“Choose a folder for the output files.”, @“c:\Audiobank\watermark”);
if (null == strOutDir)
return “no destination directory - quitting”;

// choose an output format
ISfRenderer rend = app.FindRenderer(null, strOutputType);
if (null == rend)
return “no renderer - quitting”;
ISfGenericPreset tpl = rend.ChooseTemplate(IntPtr.Zero, 0);
if (null == tpl)
return “no render template - quitting”;

// now process them until we are done or the user hits cancel
foreach (string strFilename in Directory.GetFiles(strSourceDir, strWildcard))
// make an output filename using the input filename and the output folder name with a new extension based on the render format.
string strBase = Path.GetFileNameWithoutExtension(strFilename);
string strOutfile = Path.Combine(strOutDir, strBase + “.” + rend.Extension);

  SfStatus result = ProcessAFile(app, strFilename, strOutfile, tpl);

  DPF("{0} : {1}", strFilename, result.ToString());
  if (result == SfStatus.Cancel)


return null; // return null for success, an error string otherwise

public SfStatus ProcessAFile(IScriptableApp app, string strFilename, string strOutfile, ISfGenericPreset tpl)
SfStatus result = SfStatus.Success;

// open the file
ISfFileHost file = app.OpenFile(strFilename, false, true);

/* add code here to process the file */

ISfFileHost filePop = app.OpenFile(@“c:\Audiobank\watermark.wav”, true, true);

Int64 ccLength = file.Length;
Int64 ccMix = filePop.Length;
Int64 ccStep = file.SecondsToPosition(21.0);
Int64 ccStart = 0;

if (filePop.SampleRate != file.SampleRate)
DPF(“rate doesnt match - quitting”);

ISfFileHost filePops = app.NewFile(file.DataFormat, false);
if (ccStart > 0)
filePops.InsertSilence(0, ccStart);


SfAudioSelection aselPop = new SfAudioSelection(filePop);
for (Int64 ccPos = ccStart; ccPos + ccMix < ccLength; ccPos += ccStep)
filePops.OverwriteAudio(ccPos, 0, filePop, aselPop);
if (ccMix < ccStep)
filePops.InsertSilence(ccPos + ccMix, ccStep - ccMix);


file.MixAudio(new SfAudioSelection(file), 1.0, 1.0, filePops, new SfAudioSelection(filePops));

// wait for processing to finish
result = file.WaitForDoneOrCancel();
if (result != SfStatus.Success)
   return result;

// save the file under the new name and given format
file.RenderAs(strOutfile, null, tpl, null, RenderOptions.RenderOnly);
result = file.WaitForDoneOrCancel();


return result;


public void FromSoundForge(IScriptableApp app)
ForgeApp = app; //execution begins here
app.SetStatusText(String.Format(“Script ‘{0}’ is running.”, Script.Name));
string msg = Begin(app);
app.SetStatusText(msg != null ? msg : String.Format(“Script ‘{0}’ is done.”, Script.Name));
public static IScriptableApp ForgeApp = null;
public static void DPF(string sz) { ForgeApp.OutputText(sz); }
public static void DPF(string fmt, params object[] args) { ForgeApp.OutputText(String.Format(fmt, args)); }
public static string GETARG(string key, string str) { string val = Script.Args.ValueOf(key); if (val == null) val = str; return val; }
} //EntryPoint


But then we have the problem of hackers. The raw files will be available on the server somewhere, which is unfortunate we have people like this.


Thanks for the feedback, Catch22Music. :slight_smile: Automatic watermarking is something we have considered in the past and are currently looking into, but we cannot guarantee if/when this will roll out due to the time it takes to develop and implement into the site. We know it can be done, but it’s never that easy unfortunately. :wink: For example, if we were to implement such a feature, we’d have to find a way to automatically add the watermark to short, 1 - 3 second sound effects without completely destroying/covering the original sound effect. We would also have to consider the volume of the watermark so that it could be heard on louder pieces, but not be too overbearing on quieter pieces.

That is why the current manual watermarking process offers greater flexibility to the author, because either the single watermark or the 1-minute looped watermark (download from our Wiki) can quickly be added to a piece of audio to produce the watermarked preview. It literally only takes seconds to add it to your DAW which can then be bounced to produce the preview file.

Not everything is as black and white and as easy as it sounds unfortunately, but I do think it’s a great suggestion, thanks for sharing your thoughts! :slight_smile:


Just an idea, but Envato or somebody else could always make a simple offline “envatoifier” app (adobe AIR or something) that you can download and drag your files onto. That way people can choose to do things their own way or let the app watermark your music for you.


Tom h that sounds like a gud idea!!!

I appreciate that this may make the files easier for hackers to get at them as they will be on the server, but every other company manages to find a suitable way around this so it can be done!!

Even if we created some sort of software available to all authors on Audio Jungle who could just drag the files into it and it automatically does it for you.

I appreciate that adding the watermark on a track only takes seconds, which it does. But when you have a batch of say 100 tracks to upload, this can get tedious importing the file, then making it 4 minutes long (I feel that this should be the length of the extended watermark, as most music tracks on here are around 3 minutes), then exporting.

If there was some software that you could just drop a batch load of wavs or mp3s in and click export, and it automatically did it all for you!!!

Obviously then if the reviewer thought that a particular track needed a louder or quieter watermark they could let the author know and soft reject the track, but I imagine this would only be the case for a very small amount of tracks, the majority of tracks would work fine!

p.s. sorry about all the code, didnt know how else to include it, it all came out quite messy!

Kind regards


I have just been doing it in DAW’s with the watermark on it’s own channel and i just save a project file then load and replace the other sounds. The only problem is as a lot of the stuff is sound effects i have made so far that i usually have to position the watermarks around so it works and also adjust the volumes sometimes. If it’s music though i suggest saving a preset/project file or a few variations as that has been saving me time right now and would probably be simpler for longer music.

Rather than a app though they could just have it automatically adds it looped to the preview sound just how graphics get a image overlay at graphicriver. which i think would be better. So it just asks if you want to use your own or envato’s with your own as the default setting. As said though it might not always sound good so i think the current system works quite well or at least for me it is but automatic option could be good also.