public AudioFileTrack(AudioEngine audioengine, String filename, AudioTimeMarker markers, object reference=null)
            : base(audioengine)
        {
            this.reference = null;
            this.isFree = false;
            this.filename = filename;
            this.markers = markers;
            Init();

        }
        public void defineSync(AudioTimeMarker markers, TimeSyncFct fct)
        {

            timesync = this.audioEngine.audioSystem.defineSync(this.stream, markers, fct);
        }
 public AUDIOTRACK newFileTrack(String filename, AudioTimeMarker markers)
 {
     AudioFileTrack track = new AudioFileTrack(this, filename, markers);
     tracks.AddLast(track);
     return track;
 }
        public int defineSync(int stream, AudioTimeMarker markers, AudioFileTrack.TimeSyncFct fct)
        {

            if (stream != 0)
            {
                long nextpos = Bass.BASS_ChannelSeconds2Bytes(stream, markers.getNext().TotalSeconds); // set to whatever you need
                Console.WriteLine("DEFINITION SYNC MARKER:" + nextpos + " (" + markers.getNext().TotalSeconds + "sec)");
                synctable.Add(stream, new SYNCPROC(fct));
                int id = Bass.BASS_ChannelSetSync(stream, BASSSync.BASS_SYNC_POS | BASSSync.BASS_SYNC_MIXTIME,
                nextpos, (SYNCPROC)synctable[stream], new IntPtr());
                this.idsynctable.Add(stream, id);
                return id;

            }
            else
                return 0;


        }