max v2; #N vpatcher 105 141 744 800; #P user hint 209 38 482 121 ŒThis is a hint!¹ 1000 100 0 65535 65535 52428 9 3 0 1 0 0 0; #P toggle 209 370 15 0; #P newex 261 252 27 196617 sig~; #P flonum 398 218 63 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P flonum 330 220 56 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P flonum 260 220 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P flonum 189 218 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P toggle 131 221 15 0; #P message 134 253 42 196617 loop \$1; #P newex 256 397 153 196617 dac~; #P newex 266 315 100 196617 groove~ soundbite 2; #P newex 258 145 124 196617 buffer~ soundbite 6000 2; #P newex 114 147 113 196617 record~ soundbite 2; #P toggle 65 118 15 0; #P toggle 114 48 15 0; #P newex 112 73 41 196617 adc~; #P comment 209 37 274 196617 The groove ~ object is the most versatile object for playing sound from a buffer ~. You can specify the buffer ~ to read \, the starting point \, the playback speed (either forward or backward) \, and starting and ending points for a repeating loop within the sample. As with other objects that read from a buffer ~ \, groove ~ accesses the buffer ~ remotely \, without patch cords \, by sharing its name.; #P comment 122 439 468 196617 In the example above \, the message loop 1 turns looping on \, the start time of 0 ms indicates the beginning of the buffer ~ \, the playback speed of 1 means to play forward at normal speed \, and the loop start and end times mean that (because looping is turned on) when groove ~ reaches a point 860 milliseconds into the buffer~ it will return to a point 572 ms into the buffer ~ and continue playing from there. Notice that the start time must be received as a float (or int) \, and the playback speed must be received as a signal. This means the speed can be varied continuously by sending a time-varying signal in the left inlet. Whenever a new start time is received \, groove ~ goes immediately to that time in the buffer ~ and continues playing from there at the current speed. When groove ~ receives the message loop 1 or startloop it goes to the beginning of the loop and begins playing at the current speed. (Note that loop points are ignored when groove ~ is playing in reverse \, so this does not work when the playback speed is negative.) groove ~ stops when it reaches the end of the buffer ~ (or the beginning if it?s playing backward) \, or when it receives a speed of 0.; #P comment 119 195 41 196617 looping; #P comment 185 195 52 196617 start time; #P comment 252 195 73 196617 playback speed; #P comment 332 193 74 196617 loop start time; #P comment 407 192 67 196617 loop end time; #P comment 12 304 114 196640 BEWARE! Feedback easily possible!; #P connect 9 0 8 0; #P fasten 10 0 11 0 70 147; #P connect 8 0 11 0; #P connect 16 0 15 0; #P connect 8 1 11 1; #P fasten 22 0 14 0 214 392 261 392; #P connect 13 0 14 0; #P connect 18 0 21 0; #P connect 21 0 13 0; #P fasten 17 0 13 0 194 295 271 295; #P fasten 15 0 13 0 139 293 271 293; #P fasten 19 0 13 1 335 280 316 280; #P fasten 20 0 13 2 403 284 361 284; #P connect 13 1 14 1; #P pop;