Forums > MaxMSP

adding markers/flag to audio recordings

May 17, 2007 | 5:51 pm

can anyone suggest a quick way to add markers to an audio recording. preferably, live during recording if not by editing the recorded file.


May 18, 2007 | 9:17 am

On 17-mai-07, at 19:51, assegid kidane wrote:

>
> can anyone suggest a quick way to add markers to an audio recording.
> preferably, live during recording if not by editing the recorded file.

I’m afraid there are no way to add markers in a soundfile thru Max/MSP
yet. You could record the markers positions in a [coll]. I think I once
saw in a sound editor on MacOSX the possibility to import a text file
containing markers positions, but don’t remember which one it was
(Amadeus maybe…)

But you can read markers in Max/MSP with [sfmarkers~] ;-)
I sometimes think I should add this feature to this object, but nobody
showed interested in this so far, and I don’t like the idea that in a
realtime environment, you have to wait many seconds until the soundfile
with the added markers is saved. It should rather be a feature of
[sfrecord~] (but I’m afraid the problem of saving the file would be the
same: you now how many markers you have only once you finished the
recording)

p


May 18, 2007 | 10:00 am

The way I’ve done this is to record pointers into a coll and store it
with the soundfile. When I load a soundfile, I also load the coll,
and use that to determine the playback segments. I’m just about to
make a conference call, but I can either give you a bit more
explanation, or try and separate out that part of my patch if you
need more help.

David

On 18 May 2007, at 10:17, Patrick Delges wrote:

>
> On 17-mai-07, at 19:51, assegid kidane wrote:
>
>>
>> can anyone suggest a quick way to add markers to an audio
>> recording. preferably, live during recording if not by editing the
>> recorded file.
>
> I’m afraid there are no way to add markers in a soundfile thru Max/
> MSP yet. You could record the markers positions in a [coll]. I
> think I once saw in a sound editor on MacOSX the possibility to
> import a text file containing markers positions, but don’t remember
> which one it was (Amadeus maybe…)
>
> But you can read markers in Max/MSP with [sfmarkers~] ;-)
> I sometimes think I should add this feature to this object, but
> nobody showed interested in this so far, and I don’t like the idea
> that in a realtime environment, you have to wait many seconds until
> the soundfile with the added markers is saved. It should rather be
> a feature of [sfrecord~] (but I’m afraid the problem of saving the
> file would be the same: you now how many markers you have only once
> you finished the recording)
>
> p
>


May 20, 2007 | 11:20 pm

Thanks Patrick. The sfmarkers~ object is a great idea. But my copy of Max does not have sfmarkers~ :-) I was very excited for a moment though. I am currently using the coll object to create a separate marker file. If you know of an application that can combine the text marker file with the sound track, please let me know. Both mac and PC.


May 20, 2007 | 11:37 pm

Thank you for your Help David. I am currently working with the coll object to accomplish this. Is there a way to get the current time including fractions of a second (millisecond or 1/100th of a second)in max? The date function gives time in seconds resolution. The ticks outlet is in 1/60th secs but it is relative to system start up and I am wondering if it will match the time stamping of the sound recording precisely. cpuclock outputs in milliseconds but it counts relative to max startup. How do you precisely match the sound file with the marker file?


May 21, 2007 | 2:51 pm

On 21 mai 07, at 01:20, assegid kidane wrote:

> Thanks Patrick. The sfmarkers~ object is a great idea. But my copy of
> Max does not have sfmarkers~ :-)

See http://www.maxobjects.com
There is actually only a Mac version. f.e.?? ;-)

> I was very excited for a moment though. I am currently using the coll
> object to create a separate marker file. If you know of an application
> that can combine the text marker file with the sound track, please let
> me know. Both mac and PC.

I have no time to check now, but it is possible to import markers via
AmadeusII (Mac), although I don’t know if they will be stored as
markers in the file. There is a demo of Amadeus, so you can check
yourself ;-)

> Is there a way to get the current time including fractions of a second
> (millisecond or 1/100th of a second)in max?

In [sfplay~], there is an optional outlet (even 2 outlets) that gives
you accurate positions.
In [sfrecord~], the outlet is not optional, it’s always there.
Check the help files!

_____________________________
Patrick Delges

Centre de Recherches et de Formation Musicales de Wallonie asbl

http://users.skynet.be/crfmw/max


May 23, 2007 | 8:42 am

hi Oz,

here’s the timer part of my recorder patch. I match the sound file
and marker file by giving them the same name during the saving
process. If you’re not sure how that works, I could send or upload
the "compile buffer" part of my patch, but it’s too large to post as
text.
When the paired files are reloaded, I use the marker coll to send
play from/to instructions to my playback module (which uses
[play~ ]). What I do is to select the segment I want to play by
number (ie segment 1, 2, 3, etc) and use those numbers to recall the
miilisecond positions within the file from the coll. (Segment 1 is
slot 1 in the coll etc).
So – send segment number to coll; that retrieves play start/stop
positions; send those to play~ .
Does that make sense? The functionality of all this is distributed
across several different subpatchers, so it’s not really possible for
me to send something which illustrates the whole process in a single
patch.

David

max v2;
#N vpatcher 433 178 1229 728;
#P origin 0 -45;
#P window setfont "Sans Serif" 9.;
#P window linecount 1;
#P newex 282 390 40 196617 Ltocoll;
#P newex 390 276 75 196617 t b reset clear;
#P message 390 333 33 196617 dump;
#N coll $1temp 1;
#P newobj 282 365 73 196617 coll $1temp 1;
#P newex 389 254 100 196617 r $1resend_segnum;
#P newex 50 388 27 196617 int;
#P message 198 50 14 196617 0;
#P newex 135 100 43 196617 delay 9;
#P window setfont "Sans Serif" 10.;
#P newex 16 420 70 196618 s $1segnum;
#P newex 393 92 32 196618 t b b;
#P newex 393 68 59 196618 delay 400;
#P newex 393 25 89 196618 r $1recendbang;
#N comlet bang when finished reading coll file;
#P outlet 130 389 15 0;
#N comlet reset message;
#P inlet 259 74 15 0;
#N comlet rec on/off;
#P inlet 121 52 15 0;
#P window setfont "Sans Serif" 9.;
#P newex 200 176 56 196617 r loadbang;
#P newex 260 94 50 196617 sel reset;
#P message 260 127 33 196617 set 0;
#P newex 121 178 29 196617 t b f;
#P newex 121 202 50 196617 accum 0.;
#P message 241 128 14 196617 0;
#P message 200 205 22 196617 r2l;
#P newex 121 231 57 196617 bucket 2 1;
#B color 5;
#P newex 121 75 41 196617 sel 1 0;
#N vpatcher 525 182 715 430;
#N comlet interval in ms is reported here;
#P outlet 66 173 15 0;
#P window setfont "Sans Serif" 9.;
#P newex 96 82 13 196617 b;
#P newex 96 104 46 196617 cpuclock;
#P newex 66 143 27 196617 – 0.;
#P newex 48 82 13 196617 b;
#P newex 48 104 46 196617 cpuclock;
#N comlet bang stops timing and reports interval;
#P inlet 96 58 15 0;
#N comlet bang starts timing interval;
#P inlet 48 58 15 0;
#P connect 0 0 3 0;
#P connect 3 0 2 0;
#P connect 5 0 4 0;
#P connect 4 0 7 0;
#P connect 2 0 4 1;
#P connect 1 0 6 0;
#P connect 6 0 5 0;
#P pop;
#P newobj 121 155 55 196617 p cputimer;
#P window setfont "Sans Serif" 10.;
#P newex 148 386 59 196618 delay 250;
#P message 55 332 40 196618 length;
#P newex 160 334 75 196618 r $1opencoll;
#P newex 258 267 77 196618 r $1collmess;
#P newex 16 359 27 196618 + 1;
#P newex 16 334 27 196618 int;
#P message 346 323 35 196618 clear;
#N coll $1rcdsegs 1;
#P newobj 100 358 93 196618 coll $1rcdsegs 1;
#P newex 100 333 53 196618 pack i f f;
#N counter;
#X flags 0 0;
#P newobj 33 157 66 196618 counter;
#P window setfont "Sans Serif" 9.;
#P window linecount 4;
#P comment 493 28 100 196617 receives "bang on record end" , which
finalises the timing process;
#P comment 9 31 100 196617 record on/off – comes from a level
threshold detecting patcher;
#P window linecount 2;
#P comment 178 149 100 196617 derives timing from cpuclock;
#P comment 182 232 100 196617 last number , new number;
#P fasten 29 1 8 0 420 227 21 227;
#P connect 8 0 9 0;
#P fasten 33 0 30 0 55 412 21 412;
#P connect 9 0 30 0;
#P fasten 31 0 4 0 140 148 38 148;
#P connect 4 0 8 1;
#P fasten 6 0 33 0 105 382 55 382;
#P fasten 37 0 12 0 395 314 60 314;
#P lcolor 13;
#P fasten 13 0 12 0 153 416 239 416 239 327 60 327;
#P fasten 18 0 4 2 246 146 66 146;
#P fasten 4 0 5 0 38 198 105 198;
#P fasten 10 0 6 0 263 355 105 355;
#P fasten 7 0 6 0 351 349 105 349;
#P fasten 37 2 6 0 459 356 105 356;
#P lcolor 13;
#P fasten 38 0 6 0 287 439 263 439 263 355 105 355;
#P fasten 12 0 6 0 60 356 105 356;
#P fasten 11 0 6 0 165 355 105 355;
#P connect 5 0 6 0;
#P connect 24 0 15 0;
#P fasten 32 0 15 0 203 70 126 70;
#P connect 15 0 14 0;
#P connect 14 0 20 0;
#P connect 20 0 19 0;
#P fasten 21 0 19 0 265 199 126 199;
#P fasten 17 0 16 0 205 224 126 224;
#P connect 19 0 16 0;
#P fasten 21 0 16 0 265 224 126 224;
#P connect 16 0 5 1;
#P fasten 6 2 26 0 159 384 135 384;
#P connect 15 1 31 0;
#P connect 20 1 19 1;
#P fasten 16 1 5 2 173 290 147 290;
#P connect 6 2 13 0;
#P fasten 31 0 14 1 140 132 171 132;
#P fasten 27 0 32 0 398 47 203 47;
#P connect 23 0 17 0;
#P fasten 22 0 18 0 265 117 246 117;
#P fasten 29 0 18 0 398 121 246 121;
#P connect 25 0 22 0;
#P connect 22 0 21 0;
#P fasten 29 0 21 0 398 124 265 124;
#P connect 10 0 35 0;
#P fasten 36 0 35 0 395 361 287 361;
#P fasten 5 0 35 0 105 355 287 355;
#P fasten 7 0 35 0 351 351 287 351;
#P fasten 37 1 38 0 427 387 287 387;
#P lcolor 13;
#P connect 35 0 38 0;
#P fasten 22 0 7 0 265 117 351 117;
#P connect 34 0 37 0;
#P connect 37 0 36 0;
#P lcolor 13;
#P connect 27 0 28 0;
#P connect 28 0 29 0;
#P pop;


Viewing 7 posts - 1 through 7 (of 7 total)