In your current schema, you will not be able to tag the role of the artist on basis of album.
As there is no relation in your tables to define that the entry in artist_role table is for specific album. So, what I would suggest is to create an intermediate table containing the role_id,artist_id and album_id.
To use this intermediate table with laravel's manyToMany relationship, you can define the methods in your models specifying one attribute as pivot attribute.
For, e.g. in Artist Model:
public function Roles(){
return $this->belongsToMany('App\Roles')->withPivot('album_id');
}
public function Albums(){
return $this->belongsToMany('App\Albums')->withPivot('role_id');
}
Define similar methods for other Models also..
Update:
For getting Artist with its role in Album add following method in the Album model:
public function Artists(){
return $this->belongsToMany('App\Artist')->withPivot('role_id');
}
For roles add following method:
public function Roles(){
return $this->belongsToMany('App\Roles')->withPivot('artist_id');
}