pouët.net

Trackers and metadata

category: general [glöplog]
 
Greetings all, I've been trying to find a good tracker to help in the music aspect of my demo im working on. I tried a trial copy of Sony Sound Forge but I wasnt pleased by the fact that the metadata was saved to an external file. I'm pretty new to this so, what trackers are available that actually encode the metadata "inside" the music track.

As a side note (which may not be relavent) I'm primarily interested in the Ogg Vorbis format.

added on the 2006-08-06 16:29:48 by thatguyjk thatguyjk
neither sonic sound forge (or has it really been bought by sony?) nor the ogg format have ANYTHING to do with tracking.

take this for example.
added on the 2006-08-06 16:56:57 by dipswitch dipswitch
Thank you for the link, let me rephrase my question. How is certain sync information saved within a song file???
added on the 2006-08-06 17:11:13 by thatguyjk thatguyjk
Sync Information? You mean the pattern data?
added on the 2006-08-06 18:17:41 by tomaes tomaes
ogg vorbis metadata fields don't store syncing information.
Sound forges saves peak data in a separate file to save time analyzing the waveform everytime you load it.
If you need such information, it won't be encoded in the ogg format directly.
No tracker will do that for you neither.
You may try to hunt for a multiplexer wich may allow you to encode info in the ogg stream. You'd have to write a demultiplexer though, unless your multiplexer comes with a library.
added on the 2006-08-06 18:45:20 by doh doh
iirc there is special sony mp3 encoder for soundforge that gives you the metadata too..
anyway, the way i do it is that i render it as a wav-file so i get the metadata/markers and then i have a program that export the times+comments of the into an array, works rather nice.
added on the 2006-08-06 19:00:26 by bzz bzz
Ok, bad choice of words on my part. When I said sync information what meant where tags that I place at specific points in the song. I've done this before and was able to read the tags from my program which I then used to sync what I was rendering with the song. The draw back to that was that the tag data was stored in a seperate file. I want to circumvent the seperate file issue and somehow have everything in the song file itself.
added on the 2006-08-06 19:14:06 by thatguyjk thatguyjk
i don't know what you people call "trackers", but ok...

there are some unused effects in s3m, xm and it. i'm sure other formats will have them too - though .rns from renoise (not reason!) will prolly come out in xml sometime soon (or did it come already?) but so far it's still tricky to include rns in a demo.

so. get openMPT, start tracking away, and then you can include some effect data which will not be interpreted as "music" but simple trigger for whatever you wanna do. you can have several effects and several data triggering that.

i remember doing something like that with Tournesol, one year ago. when i thought i was going to be hired by 7th cube :)
added on the 2006-08-06 21:52:46 by jeenio jeenio
Couldn't you just abuse the ID3 tag?
added on the 2006-08-06 22:58:36 by noouch noouch
Yeah, tracker is definitely the wrong terminology here if you're talking about streamed music.

I only know of .wav having sync markers. I've used Soundforge to add sync markers (for use with FMOD) and then saved as wav using an mp3 codec, I'm not sure if there's a Vorbis codec for wav. Only problem is that there can be slight differences in marker placement in the compressed wav compared to the uncompressed file.

It's definitely easier to go with a tracked format if you want tight sync.
added on the 2006-08-07 04:30:11 by SiW SiW
You listen to the music, check the at what time events happen then your coder should do something like

Code: if(time>=EVENT1 && time<=EVENT2) dothing(); (...)


Yes. Coders are THAT smart.
added on the 2006-08-07 05:01:35 by xernobyl xernobyl
this is pretty much what I do (read: ugly ass shit piece of code):

Code: // proggy to dump syncpoints to a file #include "stdafx.h" #include "fmod.h" FSOUND_STREAM * hStream = NULL; #define MAX_SYNC_POINTS 4096 typedef struct tagSyncPoint { char name[64]; unsigned int offset; } SyncPoint; FSOUND_SYNCPOINT *points; SyncPoint syncpoints[MAX_SYNC_POINTS]; int _tmain(int argc, _TCHAR* argv[]) { printf("WAV Marker to FMOD SyncPoint translator v1.0 (c) pnx/qop\r\n"); if(argc<1) { printf("Usage: m2f.exe filename.wav\r\n"); exit(0); } memset(&syncpoints, 0, sizeof(syncpoints)); FSOUND_Init(44100, 2, FSOUND_INIT_GLOBALFOCUS); hStream = FSOUND_Stream_Open(argv[1], FSOUND_MPEGACCURATE | FSOUND_LOOP_OFF, 0, 0); if(!hStream) { printf("file %s not found!\r\n", argv[1]); exit(0); } int i=0; do { points = FSOUND_Stream_GetSyncPoint(hStream, i+1); if(points) { strncpy(syncpoints[i].name, FSOUND_Stream_GetSyncPointInfo(points, &syncpoints[i].offset), 63); i++; } else break; } while(i<MAX_SYNC_POINTS); printf("found %d syncpoints in the wav file\r\n", i); for(int j=0;j<i;j++) printf("sync%d: %s - sample: %u\r\n", j, syncpoints[j].name, syncpoints[j].offset); FILE *output = fopen("syncpoints.ess", "wb"); fwrite(&i, sizeof(unsigned int), 1, output); fwrite(syncpoints, sizeof(SyncPoint), i, output); fclose(output); FSOUND_Stream_Close(hStream); FSOUND_Close(); return 0; }


NOTE: you need to save as wav file or else those riff "markers" get wiped... so dump your syncpoints from a .wav file... then load an ogg version of it in your demo.

In your demo you read those syncpoints and call a bunch of Fmod apis to setup everything for you:

FSOUND_Stream_SetSyncCallback(hStream,Callback,0);.
FSOUND_Stream_AddSyncPoint(hStream, pcm, name);

hope it helps
added on the 2006-08-07 08:03:14 by panoramix panoramix
sidenote: panoramix's stuff is all about fmod 3.

other than that, real men make synctools because some "sync points" just can't pull the trick.

that, or they hit the space bar (ask melwyn)
added on the 2006-08-07 09:04:55 by skrebbel skrebbel
panoramix thanks for the example code. Before i switched to the ogg vorbis format I was using mp3's and I was able to track the sync points while the song was playing and I would call my sync callback function (I too am using fmod). I'll do some experimenting to see what results I get. Thank you to all of you.
added on the 2006-08-07 18:46:59 by thatguyjk thatguyjk
Code: if (songpos <= 123400) stage = 0; else if (songpos <= 127200) stage = 1; else if (songpos <= 131000) stage = 2; else if (songpos <= 134800) stage = 3; else stage = 4;

added on the 2006-08-07 18:53:34 by Preacher Preacher
Rediscovering space bar sync:

http://www.flight404.com/blog/?p=111

added on the 2008-02-02 12:17:06 by _-_-__ _-_-__
Beat detection \o/
added on the 2008-02-04 08:27:25 by pailes_ pailes_

login