Trying to add in a custom AudioSource class to mixer but getting bad access

So Im trying to do a rather common thing,
add in FX to a customer transport source before it gets put into the Mixer during the process block

my code goes like this

ps Any and all Variables in this code have been declared in the header file for their respective Components and are also publicly accessable

‘’’
void MainComponent::loadTransport(int channel)
{
juce::File newFile (mixer_Component.channel_Component.soundFiles[channel]);

   t_Sources.add(new TransportSource(newFile));

   mixer.addInputSource(t_Sources[channel], false);

}

void MainComponent::getNextAudioBlock (const juce::AudioSourceChannelInfo& bufferToFill)
{
bufferToFill.clearActiveBufferRegion();

mixer.getNextAudioBlock(bufferToFill);

for(int channel = 0; channel < 10; channel++)
{
    if(mixer_Component.channel_Component.hasFiles[channel])
    {
        loadTransport(channel);
    }
    
    if(mixer_Component.channel_Component.playChannel[channel])
    {
        t_Sources[channel]->myTransport.start();
    }
    
}

}

//=============== Thats all for Main Component ====================

//================ This class derives the AudioSource and Component to apply effects etc ===

TransportSource::TransportSource( juce::File soundFile)

{

myManager.registerBasicFormats();

setFileAndLoadTransport(soundFile);

}

TransportSource::~TransportSource()

{

}

void TransportSource::setFileAndLoadTransport(juce::File file)

{

myFile = file;

myReader = myManager.createReaderFor(myFile);

mySource = new juce::AudioFormatReaderSource(myReader, true );

myTransport.setSource(mySource);

std::unique_ptrjuce::AudioFormatReaderSource tempSource ( new juce::AudioFormatReaderSource(myReader, true ));

}

juce::File TransportSource::getFile()

{

return myFile;

}

void TransportSource::prepareToPlay( int samplesPerBlockExpected, double sampleRate)

{

myTransport.prepareToPlay(samplesPerBlockExpected, sampleRate);

}

void TransportSource::getNextAudioBlock( const juce::AudioSourceChannelInfo &bufferToFill)

{

myTransport.getNextAudioBlock(bufferToFill);

}

void TransportSource::releaseResources()

{

myTransport.releaseResources();

}

void TransportSource::paint (juce::Graphics& g)

{

}

void TransportSource::resized()

{

}

//==================== MixerComponent is only to view the Channels Component

/*

MixerComponent.cpp
Created: 4 Dec 2020 9:55:27pm
Author:  Joseph Escamilla

==============================================================================
*/

#include <JuceHeader.h>
#include “MixerComponent.h”

//==============================================================================
MixerComponent::MixerComponent()
{
mixer_Viewport.setScrollBarsShown(false, true);
mixer_Viewport.setScrollBarPosition(false, false);
mixer_Viewport.setViewedComponent(&channel_Component);

addAndMakeVisible(mixer_Viewport);

}

MixerComponent::~MixerComponent()
{

}

void MixerComponent::paint (juce::Graphics& g)
{
g.fillAll(juce::Colours::black);

}

void MixerComponent::resized()
{
mixer_Viewport.setBounds(0, 7, 800, 400);
channel_Component.setBounds(0, 0,75*100
, 400);

}

//======================= Channel Component Holds initial variables to relay to Main

/*

ChannelComponent.cpp
Created: 4 Dec 2020 9:55:13pm
Author:  Joseph Escamilla

==============================================================================
*/

#include <JuceHeader.h>
#include “ChannelComponent.h”

//==============================================================================
ChannelComponent::ChannelComponent()
{
setDefaultLayout();
}

ChannelComponent::~ChannelComponent()
{

}

void ChannelComponent::setDefaultLayout()
{
for(int channel = 0; channel < 100; channel++)
{

    hasFiles[channel] = false;
    playChannel[channel] = false;
    
    ch_Buttons.add(new juce::TextButton(juce::String(channel)));
    ch_Buttons[channel]->setBounds(channel*75, 0, 35, 35);
    addAndMakeVisible(ch_Buttons[channel]);
    
    ch_Buttons[channel]->onClick = [this,channel](){loadChannelButtonClicked(channel);};
    
    EqButtons.add(new juce::TextButton("EQ"));
    EqButtons[channel]->setBounds(35+((channel)*75), 0, 35, 35);
    addAndMakeVisible(EqButtons[channel]);
    
    revButtons.add(new juce::TextButton("+|-"));
    revButtons[channel]->setBounds(channel*75,35,35,35);
    addAndMakeVisible(revButtons[channel]);
    
    latButtons.add(new juce::TextButton("lat"));
    latButtons[channel]->setBounds(35+(channel*75), 35, 35, 35);
    addAndMakeVisible(latButtons[channel]);
    
    ch_Sliders[channel].setSliderStyle(juce::Slider::LinearVertical);
    ch_Sliders[channel].setTextBoxStyle(juce::Slider::NoTextBox, false, {}, {});
    ch_Sliders[channel].setBounds(channel*75, 70, 30, 175);
    ch_Sliders[channel].setRange(0.0, 1.0);
    addAndMakeVisible(ch_Sliders[channel]);
    
    panButtons.add(new juce::TextButton(juce::String("pan")));
    panButtons[channel]->setBounds(channel*75, 250, 40, 35);
    addAndMakeVisible(panButtons[channel]);
    
    fxButtons.add(new juce::TextButton("fx"));
    fxButtons[channel]->setBounds(40+(channel*75), 250, 35, 35);
    addAndMakeVisible(fxButtons[channel]);
    
    muteButtons.add(new juce::TextButton("M"));
    muteButtons[channel]->setBounds(channel*75, 285, 40, 35);
    addAndMakeVisible(muteButtons[channel]);
    
    linkButtons.add(new juce::TextButton("lnk"));
    linkButtons[channel]->setBounds(40+(channel*75), 285, 35, 35);
    addAndMakeVisible(linkButtons[channel]);
    
    playButtons.add(new juce::TextButton("P"));
    playButtons[channel]->setBounds(channel*75, 320, 40, 35);
    addAndMakeVisible(playButtons[channel]);
    
    playButtons[channel]->onClick = [this,channel](){playButtonClicked(channel);};
    
    recButtons.add(new juce::TextButton("rec"));
    recButtons[channel]->setBounds(40+(channel*75), 320, 35, 35);
    addAndMakeVisible(recButtons[channel]);
    
    ffButtons.add(new juce::TextButton("ff"));
    ffButtons[channel]->setBounds(channel*75, 355, 40, 35);
    addAndMakeVisible(ffButtons[channel]);
    
    rvButtons.add(new juce::TextButton("rv"));
    rvButtons[channel]->setBounds(40+(channel*75), 355, 35, 35);
    addAndMakeVisible(rvButtons[channel]);
}

}

void ChannelComponent::playButtonClicked(int channel)
{
playChannel[channel] = !playChannel[channel];

}

void ChannelComponent::loadChannelButtonClicked(int channel)
{
juce::FileChooser chooser (“Choose File”, juce::File::getSpecialLocation(juce::File::SpecialLocationType::userMusicDirectory), “*.wav; *.mp3; *.aiff; *.ogg”, true, false);

if(chooser.browseForFileToOpen())
{
    juce::File file = chooser.getResult();
    soundFiles[channel] = file.getFullPathName();
    hasFiles[channel] = true;
}

}

void ChannelComponent::paint (juce::Graphics& g)
{

}

void ChannelComponent::resized()
{

}

‘’’

Again the getNextAudioBlock in main component won’t let me start the transport or play it at all.