({{, (RefLink[AudioJoin, paclet:ref/AudioJoin])[{(Subscript[audio, 1]),(Subscript[audio, 2]),…}] 
concatenates all (Subscript[audio, i]) and returns an audio object.}, {, (RefLink[AudioJoin, paclet:ref/AudioJoin])[{{(Subscript[audio, 1]),(Subscript[t, 1])},{(Subscript[audio, 2]),(Subscript[t, 2])},…}]
inserts (Subscript[t, i]) seconds of silence after each (Subscript[audio, i]).}})

OpenersNotesSection(Spacer1)Details and Options

In (RefLink[AudioJoin, paclet:ref/AudioJoin])[{{(Subscript[audio, 1]),(Subscript[t, 1])},{(Subscript[audio, 2]),(Subscript[t, 2])},…}], if any of the (Subscript[t, i]) are negative, (Subscript[audio, i+1]) overlaps (Subscript[audio, i]) by (Subscript[t, i]) seconds and the overlapped values are added.

All (Subscript[audio, i]) are conformed to have the same data type, number of channels, and sample rate.

(RefLink[AudioJoin, paclet:ref/AudioJoin]) can take a (RefLink[SampleRate, paclet:ref/SampleRate]) option to specify the sample rate of the resulting (RefLink[Audio, paclet:ref/Audio]) object.

OpenersPrimaryExamplesSection(Spacer1)Examples  (7)

OpenersExampleSection0(Spacer1)Basic Examples  (1)

Join audio objects:

a1=AudioGenerator[{"Sin",1000}];
a2=AudioGenerator["White"];

AudioJoin[{a1,a2}]

Spectrogram of the joined signals:

Spectrogram[%,PlotRange->{All,{0,3000}}]

Specify some silence between audio objects:

AudioJoin[{{a1,1},{a2,1}}]

Spectrogram of the joined signals:

Spectrogram[%,PlotRange->{All,{0,3000}}]

OpenersExampleSection1(Spacer1)Scope  (4)

Control the separation between the (RefLink[Audio, paclet:ref/Audio]) objects to be joined:

a1=AudioGenerator["Sin"];
a2=AudioGenerator["White"];

AudioJoin[{{a1,2},{a2,1}}]

AudioPlot[%]

If a (Subscript[t, i]) is negative, then (Subscript[audio, i+1]) will overlap with (Subscript[audio, i]):

AudioJoin[{{a1,-.5},{a2,0}}]

AudioPlot[%,PlotRange->All]

Join audio objects with different types:

a1=AudioGenerator["Sin",1,"SignedInteger8"];
a2=AudioGenerator[{"Sin",200},1,"Real"];

AudioJoin[{a1,a2}]

AudioType[%]

When joining audio objects with different sample rates, the larger sample rate is used:

a1=AudioGenerator["Sin",SampleRate->10000];
a2=AudioGenerator[{"Sin",200},SampleRate->44100];

AudioJoin[{a1,a2}]

AudioSampleRate[%]

Join audio objects with a different number of channels:

a1=AudioChannelCombine[Table[AudioGenerator["Sin"],2]];
a2=AudioGenerator[{"Sin",200}];

AudioJoin[{{a1,1},{a2,0}}]

AudioPlot[%]

OpenersExampleSection2(Spacer1)Options  (1)

OpenersExampleSubsection0(Spacer1)SampleRate  (1)

The (RefLink[SampleRate, paclet:ref/SampleRate]) option can be used to control the sample rate of the result:

a1=AudioGenerator["Sin"];
a2=AudioGenerator["White"];

AudioJoin[{a1,a2},SampleRate->22050]//AudioSampleRate

OpenersExampleSection3(Spacer1)Applications  (1)

Obtain a looping effect:

a=ExampleData[{"Audio","BalloonPop"},"Audio"]

AudioJoin@Table[a,10]

({{DocumentationFooterIconsRelatedFunction.png, ({{See Also}, {(RefLink[AudioPartition, paclet:ref/AudioPartition])  ▪  (RefLink[AudioSplit, paclet:ref/AudioSplit])  ▪  (RefLink[AudioOverlay, paclet:ref/AudioOverlay])  ▪  (RefLink[AudioTrim, paclet:ref/AudioTrim])  ▪  (RefLink[AudioChannelCombine, paclet:ref/AudioChannelCombine])  ▪  (RefLink[Audio, paclet:ref/Audio])  ▪  (RefLink[AudioData, paclet:ref/AudioData])  ▪  (RefLink[Join, paclet:ref/Join])  ▪  (RefLink[StringJoin, paclet:ref/StringJoin])}})}})

({{DocumentationFooterIconsRelatedGuide.png, ({{Related Guides}, {▪(RefLinkPlain[Audio Processing, paclet:guide/AudioProcessing])}})}})