Open DanielCoulbourne opened 4 years ago
@DanielCoulbourne Maybe we should supplement the segments
with the concept of Sound Boards. These are collections of pre-recorded audio that can be inserted easily into the final mix down at arbitrary points (potentially marked whilst recording in some way). These could be useful for both intro and outro music, but also for inserting adverts during the show.
What about something like this:
{
"show": {
"name": "No Plans To Merge",
"segments": [
{
"name": "Intro",
"use": "music.intro"
},
{
"name": "Content",
"tracks": [
{
"name": "Daniel",
"file": "content/daniel.mp3"
},
{
"name": "Caleb",
"file": "content/caleb.mp3"
}
],
},
{
"name": "Outro",
"use": "music.outro"
}
]
},
"soundboards": [
{
"name": "Adverts",
"ref": "adverts",
"tracks": [
{
"name": "Honeybadger",
"ref": "honeybadger",
"file": "adverts/honeybadger.mp3"
},
{
"name": "Laravel Livewire",
"ref": "laravel-livewire",
"file": "adverts/livewire.mp3"
}
]
},
{
"name": "Music",
"ref": "music",
"tracks": [
{
"name": "Intro",
"ref": "intro",
"file": "music/intro.mp3"
},
{
"name": "Outro",
"ref": "outro",
"file": "music/outro.mp3"
}
]
}
]
}
Doing something like this would allow you to create different templates for different shows, record directly into the content
directory once you've stubbed out the show structure on the filesystem, and reference pre-recorded content that is frequently used pretty easily.
What are your thoughts?
I really like this idea, although I don't love the name soundboards
.
Maybe the more generic assets
?
@DanielCoulbourne That works. It's just that sound boards are an actual audio term 😄
They're also sometimes referred to as "carts" or "cue carts" (like in QLab - which is the de facto standard for live click tracks, backing music etc in theatre.
Assets works though - and is probably more understandable for people not into audio etc 😄
@DanielCoulbourne Also, now that we have different processes / operations that we can perform on stuff, maybe this should also be in the config file? Something like:
{
"show": {
"name": "No Plans To Merge",
"segments": [
{
"name": "Intro",
"use": "music.intro"
},
{
"name": "Content",
"tracks": [
{
"name": "Daniel",
"file": "content/daniel.mp3"
},
{
"name": "Caleb",
"file": "content/caleb.mp3"
}
],
"operations": [
"level",
"mix"
]
},
{
"name": "Outro",
"use": "music.outro"
}
],
"operations": [
"concatenate"
]
},
"assets": [
{
"name": "Adverts",
"ref": "adverts",
"tracks": [
{
"name": "Honeybadger",
"ref": "honeybadger",
"file": "adverts/honeybadger.mp3"
},
{
"name": "Laravel Livewire",
"ref": "laravel-livewire",
"file": "adverts/livewire.mp3"
}
]
},
{
"name": "Music",
"ref": "music",
"tracks": [
{
"name": "Intro",
"ref": "intro",
"file": "music/intro.mp3"
},
{
"name": "Outro",
"ref": "outro",
"file": "music/outro.mp3"
}
]
}
]
}
In this way, we could apply different processing to each of the segments, and then have a final operation that concatenates all the segments together.
This is more of a brain dump than anything concrete - but I thought it might be useful to just run the production script with just the config passed and everything happen automatically 😄
I think the operations should be an implementation detail. I think of the config file as an abstraction of the operations.
Each of the "tracks" for a given "segment" will get a level
and mix
treatment, then all of the segments
will get concatenate
ed
As for the arrays of assets, I don't think that's a good idea. I tend to think grouping assets is a bit confusing.
Should support both
segments
andtracks
Segments
are chunks of audio which will be concatenated in order to create the finalClip
Tracks
are chunks of audio which will be layered to create a singlesegment
An example of a possible format is: