@@ -771,18 +771,18 @@ private void convertTrack (final IMediaFiles mediaFiles, final List<TrackInfo> f
771771 * @param parentClip Some aggregated info about the parent clip(s)
772772 * @param parameters The parameters
773773 */
774- private void convertItems (final Chunk trackChunk , final Track track , final Clips clips , final ParentClip parentClip , final Parameters parameters )
774+ private void convertClips (final Chunk trackChunk , final Track track , final Clips clips , final ParentClip parentClip , final Parameters parameters )
775775 {
776776 if (clips .clips == null )
777777 return ;
778778
779779 final boolean clipsIsBeats = TimeUtils .updateIsBeats (clips , parentClip .sourceIsBeats );
780780 for (final Clip clip : clips .clips )
781- this .convertItem (trackChunk , track , clip , parentClip , parameters , clipsIsBeats );
781+ this .convertClip (trackChunk , track , clip , parentClip , parameters , clipsIsBeats );
782782 }
783783
784784
785- private void convertItem (final Chunk trackChunk , final Track track , final Clip clip , final ParentClip parentClip , final Parameters parameters , final boolean clipsIsBeats )
785+ private void convertClip (final Chunk trackChunk , final Track track , final Clip clip , final ParentClip parentClip , final Parameters parameters , final boolean clipsIsBeats )
786786 {
787787 final Double tempo = parameters .tempo ;
788788 final boolean destinationIsBeats = parameters .destinationIsBeats ;
@@ -807,6 +807,7 @@ private void convertItem (final Chunk trackChunk, final Track track, final Clip
807807 {
808808 final ParentClip innerParentClip = new ParentClip ();
809809 innerParentClip .comment = clip .comment ;
810+ innerParentClip .mute = clip .enable != null && !clip .enable .booleanValue ();
810811
811812 // Harmonize all time based values to the destination
812813 innerParentClip .sourceIsBeats = clipContentIsBeats ;
@@ -822,7 +823,7 @@ private void convertItem (final Chunk trackChunk, final Track track, final Clip
822823 innerParentClip .loopStart = clip .loopStart == null ? 0 : handleTime (clip .loopStart .doubleValue (), clipContentIsBeats , destinationIsBeats , tempo );
823824 innerParentClip .loopEnd = clip .loopEnd == null ? -1 : handleTime (clip .loopEnd .doubleValue (), clipContentIsBeats , destinationIsBeats , tempo );
824825
825- this .convertItems (trackChunk , track , groupedClips , innerParentClip , parameters );
826+ this .convertClips (trackChunk , track , groupedClips , innerParentClip , parameters );
826827 return ;
827828 }
828829
@@ -855,7 +856,7 @@ private void convertItem (final Chunk trackChunk, final Track track, final Clip
855856
856857 final Double fadeIn = handleTime (clip .fadeInTime , destinationIsBeats , parameters );
857858 final Double fadeOut = handleTime (clip .fadeOutTime , destinationIsBeats , parameters );
858- final Chunk itemChunk = createClipChunk (trackChunk , clip .name , start , clipDuration , offset , fadeIn , fadeOut );
859+ final Chunk itemChunk = createClipChunk (trackChunk , clip .name , start , clipDuration , offset , fadeIn , fadeOut , parentClip . mute || ( clip . enable != null && ! clip . enable . booleanValue ()) );
859860
860861 if (parentClip .comment != null && !parentClip .comment .isBlank ())
861862 createNotesChunk (itemChunk , parentClip .comment , ReaperTags .PROJECT_NOTES );
@@ -910,16 +911,19 @@ private void convertLoopedAudio (final Chunk trackChunk, final Clip clip, final
910911
911912 final Double fadeIn = handleTime (clip .fadeInTime , isBeats , parameters );
912913 final Double fadeOut = handleTime (clip .fadeOutTime , isBeats , parameters );
913- itemChunk = createClipChunk (trackChunk , clip .name , start , duration , clipOffset , fadeIn , fadeOut );
914+ itemChunk = createClipChunk (trackChunk , clip .name , start , duration , clipOffset , fadeIn , fadeOut , parentClip . mute || ( clip . enable != null && ! clip . enable . booleanValue ()) );
914915 }
915916 }
916917
917918
918- private static Chunk createClipChunk (final Chunk trackChunk , final String clipName , final double start , final double duration , final double offset , final Double fadeIn , final Double fadeOut )
919+ private static Chunk createClipChunk (final Chunk trackChunk , final String clipName , final double start , final double duration , final double offset , final Double fadeIn , final Double fadeOut , final boolean mute )
919920 {
920921 final Chunk itemChunk = addChunk (trackChunk , ReaperTags .CHUNK_ITEM );
921922 if (clipName != null )
922923 addNode (itemChunk , ReaperTags .ITEM_NAME , clipName );
924+ if (mute )
925+ addNode (itemChunk , ReaperTags .ITEM_MUTE , "1" );
926+
923927 addNode (itemChunk , ReaperTags .ITEM_POSITION , Double .toString (start ));
924928 addNode (itemChunk , ReaperTags .ITEM_LENGTH , Double .toString (duration ));
925929 addNode (itemChunk , ReaperTags .ITEM_SAMPLE_OFFSET , Double .toString (offset ));
@@ -1124,6 +1128,9 @@ private void convertArrangementLanes (final Chunk rootChunk, final Project proje
11241128 if (project .arrangement == null || project .arrangement .lanes == null )
11251129 return ;
11261130
1131+ if (project .arrangement .markers != null )
1132+ this .convertMarkers (rootChunk , parameters , project .arrangement .markers , arrangementIsBeats );
1133+
11271134 for (final Timeline timeline : project .arrangement .lanes .lanes )
11281135 if (timeline instanceof final Markers markers && markers .markers != null )
11291136 this .convertMarkers (rootChunk , parameters , markers , arrangementIsBeats );
@@ -1178,7 +1185,7 @@ private void convertScenes (final Chunk rootChunk, final Project project, final
11781185 final double duration = TimeUtils .getDuration (clip );
11791186 for (double pos = 0 ; pos < maxDuration ; pos += duration )
11801187 {
1181- this .convertItem (trackChunk , track , clip , parentClip , parameters , isBeats );
1188+ this .convertClip (trackChunk , track , clip , parentClip , parameters , isBeats );
11821189 clip .time += duration ;
11831190 }
11841191 }
@@ -1240,7 +1247,7 @@ else if (trackTimeline instanceof final Clips clips)
12401247 {
12411248 final ParentClip parentClip = new ParentClip ();
12421249 parentClip .valuesIsBeats = timelineIsBeats ;
1243- this .convertItems (trackChunk , track , clips , parentClip , parameters );
1250+ this .convertClips (trackChunk , track , clips , parentClip , parameters );
12441251 }
12451252 else if (trackTimeline instanceof final Warps warps )
12461253 this .convertWarps (rootOrItemChunk , parameters , warps , arrangementIsBeats );
@@ -1729,6 +1736,7 @@ private static class ParentClip
17291736 boolean valuesIsBeats = true ;
17301737
17311738 String comment ;
1739+ boolean mute ;
17321740 // The start of the loop
17331741 double loopEnd ;
17341742 // The end of the loop
0 commit comments