tModLoader v0.11.8.9
A mod to make and play Terraria mods
Terraria.ModLoader.Audio.MusicStreaming Class Referenceabstract
+ Inheritance diagram for Terraria.ModLoader.Audio.MusicStreaming:
+ Collaboration diagram for Terraria.ModLoader.Audio.MusicStreaming:

Public Member Functions

 MusicStreaming (string path)
 
override void CheckBuffer ()
 
void Dispose ()
 
override void Pause ()
 
override void Play ()
 
override void Resume ()
 
override void SetVariable (string name, float value)
 
override void Stop (AudioStopOptions options)
 
- Public Member Functions inherited from Terraria.ModLoader.Audio.Music
virtual void CheckBuffer ()
 
abstract void Pause ()
 
abstract void Play ()
 
abstract void Reset ()
 
abstract void Resume ()
 
abstract void SetVariable (string name, float value)
 
abstract void Stop (AudioStopOptions options)
 

Protected Member Functions

virtual void FillBuffer (byte[] buffer)
 
abstract void PrepareStream ()
 

Protected Attributes

AudioChannels channels
 
int sampleRate
 
Stream stream
 

Properties

override bool IsPaused [get]
 
override bool IsPlaying [get]
 
- Properties inherited from Terraria.ModLoader.Audio.Music
abstract bool IsPaused [get]
 
abstract bool IsPlaying [get]
 

Private Member Functions

void EnsureLoaded ()
 
void SubmitSingle ()
 

Private Attributes

byte[] buffer
 
DynamicSoundEffectInstance instance
 
string path
 

Static Private Attributes

const int bufferCountPerSubmit = 2
 
const int bufferLength = 4096
 
const int bufferMin = 4
 

Additional Inherited Members

- Static Public Member Functions inherited from Terraria.ModLoader.Audio.Music
static implicit operator Music (Cue cue)
 

Detailed Description

Definition at line 42 of file MusicWrappers.cs.

Constructor & Destructor Documentation

◆ MusicStreaming()

Terraria.ModLoader.Audio.MusicStreaming.MusicStreaming ( string  path)

Definition at line 63 of file MusicWrappers.cs.

63 {
64 this.path = path;
65 }

References Terraria.ModLoader.Audio.MusicStreaming.path.

Member Function Documentation

◆ CheckBuffer()

override void Terraria.ModLoader.Audio.MusicStreaming.CheckBuffer ( )
virtual

◆ Dispose()

void Terraria.ModLoader.Audio.MusicStreaming.Dispose ( )

Definition at line 133 of file MusicWrappers.cs.

133 {
134 if (instance != null)
135 Stop(AudioStopOptions.Immediate);
136 }
override void Stop(AudioStopOptions options)

References Terraria.ModLoader.Audio.MusicStreaming.instance, and Terraria.ModLoader.Audio.MusicStreaming.Stop().

+ Here is the call graph for this function:

◆ EnsureLoaded()

void Terraria.ModLoader.Audio.MusicStreaming.EnsureLoaded ( )
private

Definition at line 85 of file MusicWrappers.cs.

85 {
86 if (instance != null)
87 return;
88
89 stream = ModContent.OpenRead(path, true);
91
92 instance = new DynamicSoundEffectInstance(sampleRate, channels);
93 buffer = new byte[bufferLength]; // could use a buffer pool but swapping music isn't likely to thrash the GC too much
94
96 }

References Terraria.ModLoader.Audio.MusicStreaming.buffer, Terraria.ModLoader.Audio.MusicStreaming.bufferLength, Terraria.ModLoader.Audio.MusicStreaming.channels, Terraria.ModLoader.Audio.MusicStreaming.CheckBuffer(), Terraria.ModLoader.Audio.MusicStreaming.instance, Terraria.ModLoader.ModContent.OpenRead(), Terraria.ModLoader.Audio.MusicStreaming.path, Terraria.ModLoader.Audio.MusicStreaming.PrepareStream(), Terraria.ModLoader.Audio.MusicStreaming.sampleRate, and Terraria.ModLoader.Audio.MusicStreaming.stream.

Referenced by Terraria.ModLoader.Audio.MusicStreaming.Play().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ FillBuffer()

virtual void Terraria.ModLoader.Audio.MusicStreaming.FillBuffer ( byte[]  buffer)
protectedvirtual

Reimplemented in Terraria.ModLoader.Audio.MusicStreamingOGG.

Definition at line 125 of file MusicWrappers.cs.

125 {
126 int read = stream.Read(buffer, 0, buffer.Length);
127 if (read < buffer.Length) {
128 Reset();
129 stream.Read(buffer, read, buffer.Length - read);
130 }
131 }

References Terraria.ModLoader.Audio.MusicStreaming.buffer, Terraria.ModLoader.Audio.Music.Reset(), and Terraria.ModLoader.Audio.MusicStreaming.stream.

Referenced by Terraria.ModLoader.Audio.MusicStreaming.SubmitSingle().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Pause()

override void Terraria.ModLoader.Audio.MusicStreaming.Pause ( )
virtual

◆ Play()

override void Terraria.ModLoader.Audio.MusicStreaming.Play ( )
virtual

Implements Terraria.ModLoader.Audio.Music.

Definition at line 71 of file MusicWrappers.cs.

71 {
73 instance.Play();
74 }

References Terraria.ModLoader.Audio.MusicStreaming.EnsureLoaded(), and Terraria.ModLoader.Audio.MusicStreaming.instance.

+ Here is the call graph for this function:

◆ PrepareStream()

abstract void Terraria.ModLoader.Audio.MusicStreaming.PrepareStream ( )
protectedpure virtual

◆ Resume()

override void Terraria.ModLoader.Audio.MusicStreaming.Resume ( )
virtual

◆ SetVariable()

override void Terraria.ModLoader.Audio.MusicStreaming.SetVariable ( string  name,
float  value 
)
virtual

Implements Terraria.ModLoader.Audio.Music.

Definition at line 76 of file MusicWrappers.cs.

76 {
77 switch (name) {
78 case "Volume": instance.Volume = value; return;
79 case "Pitch": instance.Pitch = value; return;
80 case "Pan": instance.Pan = value; return;
81 default: throw new Exception("Invalid field: '" + name + "'");
82 }
83 }

◆ Stop()

override void Terraria.ModLoader.Audio.MusicStreaming.Stop ( AudioStopOptions  options)
virtual

Implements Terraria.ModLoader.Audio.Music.

Reimplemented in Terraria.ModLoader.Audio.MusicStreamingMP3, and Terraria.ModLoader.Audio.MusicStreamingOGG.

Definition at line 100 of file MusicWrappers.cs.

100 {
101 instance.Stop();
102
103 instance.Dispose();
104 instance = null;
105
106 stream.Dispose();
107 stream = null;
108
109 buffer = null;
110 }

References Terraria.ModLoader.Audio.MusicStreaming.buffer, Terraria.ModLoader.Audio.MusicStreaming.instance, and Terraria.ModLoader.Audio.MusicStreaming.stream.

Referenced by Terraria.ModLoader.Audio.MusicStreaming.Dispose().

+ Here is the caller graph for this function:

◆ SubmitSingle()

void Terraria.ModLoader.Audio.MusicStreaming.SubmitSingle ( )
private

Definition at line 120 of file MusicWrappers.cs.

120 {
122 instance.SubmitBuffer(buffer);
123 }
virtual void FillBuffer(byte[] buffer)

References Terraria.ModLoader.Audio.MusicStreaming.buffer, Terraria.ModLoader.Audio.MusicStreaming.FillBuffer(), and Terraria.ModLoader.Audio.MusicStreaming.instance.

Referenced by Terraria.ModLoader.Audio.MusicStreaming.CheckBuffer().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Member Data Documentation

◆ buffer

◆ bufferCountPerSubmit

const int Terraria.ModLoader.Audio.MusicStreaming.bufferCountPerSubmit = 2
staticprivate

◆ bufferLength

const int Terraria.ModLoader.Audio.MusicStreaming.bufferLength = 4096
staticprivate

◆ bufferMin

const int Terraria.ModLoader.Audio.MusicStreaming.bufferMin = 4
staticprivate

◆ channels

◆ instance

◆ path

string Terraria.ModLoader.Audio.MusicStreaming.path
private

◆ sampleRate

◆ stream

Property Documentation

◆ IsPaused

override bool Terraria.ModLoader.Audio.MusicStreaming.IsPaused
get

Definition at line 67 of file MusicWrappers.cs.

◆ IsPlaying

override bool Terraria.ModLoader.Audio.MusicStreaming.IsPlaying
get