Post by popiroshka on Apr 12, 2024 21:52:38 GMT
Before I will start explaining here, I want to say that this is more like part 2 for this guide.
PlayAt - Can move a whole segment with his settings if this code will be as plus numbers. If this code as minus, then it will cut song from the beginning, but for that we should write same numbers, but as plus, inside the BeginTrimOffset.
BeginTrimOffset - If the value is plus, then it will allow the segment to play that second without allowing it cutting. If it minus, then the song will be cutting from the beginning.
EndTrimOffset - If the value is plus, then this is when the segment will be ended and also with not allowing cut it as well. If it minus, then the song will be cutting from the end.
Coding all of them shouldn't be the same! It will mute your whole segment if that happen. If you want to cut your song from the beginning, then use PlayAt(as minus) and BeginTrimOffset(as plus). EndTrimOffest doesn't conflict with others, even if it has a minus or a plus numbers. Only PlayAt and BeginTrimOffset might be uncorrected. If we are cutting our song with these codes, then SourceDuration should be cutted as well, but this duration needs to be written only inside the MusicMarker duration.
AutomationItem/AutomationItems
This code allows the segment to be ended with FadeOut effect or can be started with FadeIn effect. We can turn this code off by deleting his list and set him as 0(check original code where's he as zero to make it correct). He has two types of coding, where one is for FadeIn and for FadeOut. If its AutoType has a value of 3, then this is FadeIn. For a simpler understanding, then when it has two GraphPoint. If its AutoType has a value of 4, then this is FadeOut. For more simply understanding, then it's three GraphPoint. First code From its seconds where's code will work. The seconds format for this code should be written as it was in the original. Second code To is for increasing volume. Both codes should be used together. To create this code, we could also copy it somewhere where it works and put it where it was turned off.
RTPC
This code works the same everywhere, and it lowers the sound from the action. In dynamic logic, it uses for A raising as increasing volume.
He has same logic with From and To as it was with AutomationItem. You can do a trick with volume or just turning off this effect for A.
MusicSegment
This is where we can see the ID for SeqPlaylistItem and ChildIDs what for MusicMarkers. In that case, all these rules will work for all ChildIDs. It might be any A segments or when plays more than two segments. BuryTheLight uses this logic when two and three segments working only for one MusicMarker. If you copy ChildIDs and search it up there, then you will see what exactly segment is. This might be very helpful for finding A segments and coding BuryTheLight.
What is that ID of the MusicSegment? First what we will find it's how many D or S have segments, and second one is where we can change rule for this segment inside SeqPlayListItem, where he as Child. We can turn random off or make him always looping. Use Loop and AvoidRepeatCount for this. If Loop is 0, then it will always be looping segment and if it more than 1, then this is how many times segment will looping before switching. If AvoidRepeatCount will be as 0, then segment won't be skipped and if it more than 1, then this is how many times segment will be skipped. Keep in mind that any dynamic has one line when player just doing hit and nothing after. Random will work after A and S rank.
AkMeterGridPeriod
This code allows one segment continue plays some seconds in another if he's not finished yet. For example, if I set inside the MusicMarker 10000 as the point of transition to the next segment, while duration MusicMarker was 11000, then this 1000 will play with the next segment. Segment will be ended without fade out effect, but you also can use AutomationItem for it.
MusicMarker
Some of the MusicMarker can be for a moment when segment can be switched or continued. One of the easier ways is just remember that the first is always where our segment will start play, while the last one is moment for the transition. In another example if ID value as 0, then this is moment for the switching. Operation for it might be different, for example, is when can be cutting for the S lost rank segment or be jumped to the last one segment. MusicMarker with ID value as 0 will cut song immediately without FadeIn or FadeOut effect.
Properties/Prop
This is the reason why one of the segment is louder than another. This code uses for increasing volume a whole segment and for song that has more than 4 audio channels. When we replace with our custom song what have only one or two audio channels, then he just increases volume to double, and this is because song wasn't having 4 audio channels. He has two type of volume code where's one for upping audio channel or a whole segment. If you want to increase your segment volume with this one, then change uint32 to float, and the values to up to increase the volume or down to decrease the volume. The other way is, of course, to copy it somewhere, and my advice here is to copy it from any S segment.
Just change seconds inside the MusicSegment code to 0: Duration and all MusicMarkers.
We are not cutting or deleting him, nope, we just change duration into 0, and that's why he will be skip immediately.
A CODING
A doesn't even have own MusicMarker code, and A duration is SourceDuration only what actually working with PlayAt/BeginTrimOffse/EndTrimOffset. For making custom duration just change SourceDuration. EndTrimOffset is that code what allows A looping when it's plus numbers, but if you will write minus numbers, then this code will cut A without loop. Using him as plus will ended A loop after those seconds. Your mission with A here will be to finding her duration that playing somewhere with one of the D segments. In that case, A loop duration should be from the start to the end of the D segment, where's A loop will be restarted. Another way for understanding A is using REF and checking loop beside the 666 and 999 stylish points numbers. What about another easier way with A, it's taking your one of the longest D segment duration seconds for A as file, and write it inside code, for example: I will write inside the SoursecDuration 30000 (because A is about 30 sec. as file) for any A code, but EndTrimOffset always be different with mines numbers, that will cut duration for A just by according one of the D segment duration. I mean, when you find A, scroll down until you will see the first MusicMarker and take its end duration. So, my segment has 6000 durations inside the MusicMarker, then EndTrimOfsset will be -24000 because I want to cut A here without allowing continue in another segment. This is the one of the ways for avoiding A overlaps just by having longer file. If you want to make perfect A loop, then you should work with PlayAt (if one A overlapping in another A) and plus numbers for EndTrimOffset. Plus numbers will allow A looping only seconds that you will set there. In that case, you should write perfect end loop timing for one of the D segment.
REMOVING A
For making A silence, you should remove her duration inside her code or just make silence files and replace A segments. Next what you will do is taking SourceID of the segment where you want to remove A. After choosing segment, you should find a little down there code RTPC, which belongs to A. Now change number inside this code like "name=To value=-1", what is inside the any GraphPoint to 0. Another way is taking original example code where's RTPC as 0 and do the same for turning this code off.
VOLUME CHANGING
I'm always use AutomationItem code for changing volume just by set there like 0.5-0.9 for all GraphPoint. Using Prop code for it might affect with more than one segment.
To put it simpler where's volume will changed as code, then it's any instrumental segment.
FASTER FIND FOR MUSICMARKER
When you find your segment by SourceID, you will be able to see up there a MusicTrack, which will have a different ID (<field type="uint32" name="ID" value="715977523" />) for the MusicSegment. Take this ID and find it down there. To be very shortly about it, then this is another segment ID where's he would be as a Child. It's very helpful with BTL and any boss music coding.
WHY SOME OF THE SEGMENTS CAN BE FOUND MANY TIMES
It's because this segment has a lot of the variation to play. For example, BuryTheLight has three segments when battle just started, but they play randomly with four variations. If we are talking about boss fight, then it might be intro what will play once, and another is for repeating. Just take original segment song file and combine his seconds with the PlayAt/BeginTrimOffset/EndTrimOffset for understanding it simply.
Hope something from it was close to understand for you all! I'm pretty sure you will understand more after playing with all this stuff that I showed you where it is.
OBJECT TYPE
PlayAT/BeginTrimOffset/EndTrimOffsetPlayAt - Can move a whole segment with his settings if this code will be as plus numbers. If this code as minus, then it will cut song from the beginning, but for that we should write same numbers, but as plus, inside the BeginTrimOffset.
BeginTrimOffset - If the value is plus, then it will allow the segment to play that second without allowing it cutting. If it minus, then the song will be cutting from the beginning.
EndTrimOffset - If the value is plus, then this is when the segment will be ended and also with not allowing cut it as well. If it minus, then the song will be cutting from the end.
Coding all of them shouldn't be the same! It will mute your whole segment if that happen. If you want to cut your song from the beginning, then use PlayAt(as minus) and BeginTrimOffset(as plus). EndTrimOffest doesn't conflict with others, even if it has a minus or a plus numbers. Only PlayAt and BeginTrimOffset might be uncorrected. If we are cutting our song with these codes, then SourceDuration should be cutted as well, but this duration needs to be written only inside the MusicMarker duration.
AutomationItem/AutomationItems
This code allows the segment to be ended with FadeOut effect or can be started with FadeIn effect. We can turn this code off by deleting his list and set him as 0(check original code where's he as zero to make it correct). He has two types of coding, where one is for FadeIn and for FadeOut. If its AutoType has a value of 3, then this is FadeIn. For a simpler understanding, then when it has two GraphPoint. If its AutoType has a value of 4, then this is FadeOut. For more simply understanding, then it's three GraphPoint. First code From its seconds where's code will work. The seconds format for this code should be written as it was in the original. Second code To is for increasing volume. Both codes should be used together. To create this code, we could also copy it somewhere where it works and put it where it was turned off.
RTPC
This code works the same everywhere, and it lowers the sound from the action. In dynamic logic, it uses for A raising as increasing volume.
He has same logic with From and To as it was with AutomationItem. You can do a trick with volume or just turning off this effect for A.
MusicSegment
This is where we can see the ID for SeqPlaylistItem and ChildIDs what for MusicMarkers. In that case, all these rules will work for all ChildIDs. It might be any A segments or when plays more than two segments. BuryTheLight uses this logic when two and three segments working only for one MusicMarker. If you copy ChildIDs and search it up there, then you will see what exactly segment is. This might be very helpful for finding A segments and coding BuryTheLight.
What is that ID of the MusicSegment? First what we will find it's how many D or S have segments, and second one is where we can change rule for this segment inside SeqPlayListItem, where he as Child. We can turn random off or make him always looping. Use Loop and AvoidRepeatCount for this. If Loop is 0, then it will always be looping segment and if it more than 1, then this is how many times segment will looping before switching. If AvoidRepeatCount will be as 0, then segment won't be skipped and if it more than 1, then this is how many times segment will be skipped. Keep in mind that any dynamic has one line when player just doing hit and nothing after. Random will work after A and S rank.
AkMeterGridPeriod
This code allows one segment continue plays some seconds in another if he's not finished yet. For example, if I set inside the MusicMarker 10000 as the point of transition to the next segment, while duration MusicMarker was 11000, then this 1000 will play with the next segment. Segment will be ended without fade out effect, but you also can use AutomationItem for it.
MusicMarker
Some of the MusicMarker can be for a moment when segment can be switched or continued. One of the easier ways is just remember that the first is always where our segment will start play, while the last one is moment for the transition. In another example if ID value as 0, then this is moment for the switching. Operation for it might be different, for example, is when can be cutting for the S lost rank segment or be jumped to the last one segment. MusicMarker with ID value as 0 will cut song immediately without FadeIn or FadeOut effect.
Properties/Prop
This is the reason why one of the segment is louder than another. This code uses for increasing volume a whole segment and for song that has more than 4 audio channels. When we replace with our custom song what have only one or two audio channels, then he just increases volume to double, and this is because song wasn't having 4 audio channels. He has two type of volume code where's one for upping audio channel or a whole segment. If you want to increase your segment volume with this one, then change uint32 to float, and the values to up to increase the volume or down to decrease the volume. The other way is, of course, to copy it somewhere, and my advice here is to copy it from any S segment.
ADVICE
TURNING OFF ONE OF THE SEGMENTWe are not cutting or deleting him, nope, we just change duration into 0, and that's why he will be skip immediately.
A CODING
A doesn't even have own MusicMarker code, and A duration is SourceDuration only what actually working with PlayAt/BeginTrimOffse/EndTrimOffset. For making custom duration just change SourceDuration. EndTrimOffset is that code what allows A looping when it's plus numbers, but if you will write minus numbers, then this code will cut A without loop. Using him as plus will ended A loop after those seconds. Your mission with A here will be to finding her duration that playing somewhere with one of the D segments. In that case, A loop duration should be from the start to the end of the D segment, where's A loop will be restarted. Another way for understanding A is using REF and checking loop beside the 666 and 999 stylish points numbers. What about another easier way with A, it's taking your one of the longest D segment duration seconds for A as file, and write it inside code, for example: I will write inside the SoursecDuration 30000 (because A is about 30 sec. as file) for any A code, but EndTrimOffset always be different with mines numbers, that will cut duration for A just by according one of the D segment duration. I mean, when you find A, scroll down until you will see the first MusicMarker and take its end duration. So, my segment has 6000 durations inside the MusicMarker, then EndTrimOfsset will be -24000 because I want to cut A here without allowing continue in another segment. This is the one of the ways for avoiding A overlaps just by having longer file. If you want to make perfect A loop, then you should work with PlayAt (if one A overlapping in another A) and plus numbers for EndTrimOffset. Plus numbers will allow A looping only seconds that you will set there. In that case, you should write perfect end loop timing for one of the D segment.
REMOVING A
For making A silence, you should remove her duration inside her code or just make silence files and replace A segments. Next what you will do is taking SourceID of the segment where you want to remove A. After choosing segment, you should find a little down there code RTPC, which belongs to A. Now change number inside this code like "name=To value=-1", what is inside the any GraphPoint to 0. Another way is taking original example code where's RTPC as 0 and do the same for turning this code off.
VOLUME CHANGING
I'm always use AutomationItem code for changing volume just by set there like 0.5-0.9 for all GraphPoint. Using Prop code for it might affect with more than one segment.
To put it simpler where's volume will changed as code, then it's any instrumental segment.
FASTER FIND FOR MUSICMARKER
When you find your segment by SourceID, you will be able to see up there a MusicTrack, which will have a different ID (<field type="uint32" name="ID" value="715977523" />) for the MusicSegment. Take this ID and find it down there. To be very shortly about it, then this is another segment ID where's he would be as a Child. It's very helpful with BTL and any boss music coding.
WHY SOME OF THE SEGMENTS CAN BE FOUND MANY TIMES
It's because this segment has a lot of the variation to play. For example, BuryTheLight has three segments when battle just started, but they play randomly with four variations. If we are talking about boss fight, then it might be intro what will play once, and another is for repeating. Just take original segment song file and combine his seconds with the PlayAt/BeginTrimOffset/EndTrimOffset for understanding it simply.
Hope something from it was close to understand for you all! I'm pretty sure you will understand more after playing with all this stuff that I showed you where it is.