added test data similar to real data, including variants with fewer samples, odd filenames. Updated modles, and added notes'
This commit is contained in:
parent
961ace637e
commit
595c1cb9ea
|
@ -6,7 +6,10 @@ Browser for Magix Soundpool files
|
||||||
Small app to catalogue files from Magix Soundpool DVD's into Genres, Instruments and samples.
|
Small app to catalogue files from Magix Soundpool DVD's into Genres, Instruments and samples.
|
||||||
Plus preview said samples.
|
Plus preview said samples.
|
||||||
|
|
||||||
Should also allow dragging sample into another app, like Garageband or Logic
|
Should also allow dragging sample into another app, like Garageband or Logic.
|
||||||
|
Also liking samples. Provide filtering of Genre / Category / Instrument.
|
||||||
|
|
||||||
|
Supposed to be quick and dirty.
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
E2D9A8F828F2118D00519159 /* Brain.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2D9A8F728F2118D00519159 /* Brain.swift */; };
|
E2D9A8F828F2118D00519159 /* Brain.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2D9A8F728F2118D00519159 /* Brain.swift */; };
|
||||||
E2D9A8FA28F21B0B00519159 /* Category.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2D9A8F928F21B0B00519159 /* Category.swift */; };
|
E2D9A8FA28F21B0B00519159 /* Category.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2D9A8F928F21B0B00519159 /* Category.swift */; };
|
||||||
E2D9A8FD28F2207B00519159 /* Waveform in Frameworks */ = {isa = PBXBuildFile; productRef = E2D9A8FC28F2207B00519159 /* Waveform */; };
|
E2D9A8FD28F2207B00519159 /* Waveform in Frameworks */ = {isa = PBXBuildFile; productRef = E2D9A8FC28F2207B00519159 /* Waveform */; };
|
||||||
|
E2D9A8FF28F2242400519159 /* Sample.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2D9A8FE28F2242400519159 /* Sample.swift */; };
|
||||||
/* End PBXBuildFile section */
|
/* End PBXBuildFile section */
|
||||||
|
|
||||||
/* Begin PBXFileReference section */
|
/* Begin PBXFileReference section */
|
||||||
|
@ -35,6 +36,7 @@
|
||||||
E2D9A8F528F2104C00519159 /* FileScanner.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FileScanner.swift; sourceTree = "<group>"; };
|
E2D9A8F528F2104C00519159 /* FileScanner.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FileScanner.swift; sourceTree = "<group>"; };
|
||||||
E2D9A8F728F2118D00519159 /* Brain.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Brain.swift; sourceTree = "<group>"; };
|
E2D9A8F728F2118D00519159 /* Brain.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Brain.swift; sourceTree = "<group>"; };
|
||||||
E2D9A8F928F21B0B00519159 /* Category.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Category.swift; sourceTree = "<group>"; };
|
E2D9A8F928F21B0B00519159 /* Category.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Category.swift; sourceTree = "<group>"; };
|
||||||
|
E2D9A8FE28F2242400519159 /* Sample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Sample.swift; sourceTree = "<group>"; };
|
||||||
/* End PBXFileReference section */
|
/* End PBXFileReference section */
|
||||||
|
|
||||||
/* Begin PBXFrameworksBuildPhase section */
|
/* Begin PBXFrameworksBuildPhase section */
|
||||||
|
@ -97,6 +99,7 @@
|
||||||
E2D9A8F128F20DF500519159 /* Scale.swift */,
|
E2D9A8F128F20DF500519159 /* Scale.swift */,
|
||||||
E2D9A8F728F2118D00519159 /* Brain.swift */,
|
E2D9A8F728F2118D00519159 /* Brain.swift */,
|
||||||
E2D9A8F928F21B0B00519159 /* Category.swift */,
|
E2D9A8F928F21B0B00519159 /* Category.swift */,
|
||||||
|
E2D9A8FE28F2242400519159 /* Sample.swift */,
|
||||||
);
|
);
|
||||||
path = Models;
|
path = Models;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
|
@ -197,6 +200,7 @@
|
||||||
E2D9A8F828F2118D00519159 /* Brain.swift in Sources */,
|
E2D9A8F828F2118D00519159 /* Brain.swift in Sources */,
|
||||||
E2D9A8DD28F20AF200519159 /* ContentView.swift in Sources */,
|
E2D9A8DD28F20AF200519159 /* ContentView.swift in Sources */,
|
||||||
E2D9A8DB28F20AF200519159 /* SoundpoolBrowserApp.swift in Sources */,
|
E2D9A8DB28F20AF200519159 /* SoundpoolBrowserApp.swift in Sources */,
|
||||||
|
E2D9A8FF28F2242400519159 /* Sample.swift in Sources */,
|
||||||
E2D9A8FA28F21B0B00519159 /* Category.swift in Sources */,
|
E2D9A8FA28F21B0B00519159 /* Category.swift in Sources */,
|
||||||
E2D9A8F628F2104C00519159 /* FileScanner.swift in Sources */,
|
E2D9A8F628F2104C00519159 /* FileScanner.swift in Sources */,
|
||||||
E2D9A8F228F20DF500519159 /* Scale.swift in Sources */,
|
E2D9A8F228F20DF500519159 /* Scale.swift in Sources */,
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
import Foundation
|
import Foundation
|
||||||
|
|
||||||
struct Category {
|
struct Category {
|
||||||
|
var id: UUID
|
||||||
var name: String
|
var name: String
|
||||||
var instruments: [Instrument]
|
var instruments: [Instrument]
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,6 +20,8 @@ import Foundation
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct Genre {
|
struct Genre {
|
||||||
|
var id: UUID
|
||||||
|
|
||||||
var name: String
|
var name: String
|
||||||
var volumeNumber: Int
|
var volumeNumber: Int
|
||||||
var tempo: Int
|
var tempo: Int
|
||||||
|
|
|
@ -18,11 +18,11 @@ import Foundation
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct Instrument {
|
struct Instrument {
|
||||||
|
var id: UUID
|
||||||
var name: String
|
var name: String
|
||||||
var number: Int
|
var numberOfSamples: Int
|
||||||
|
var samples: [Sample]
|
||||||
var scale: Scale
|
var scale: Scale
|
||||||
var location: String
|
|
||||||
var liked: Bool
|
var liked: Bool
|
||||||
var dateLiked: Date
|
var dateLiked: Date
|
||||||
var length: Float
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
//
|
||||||
|
// Sample.swift
|
||||||
|
// SoundpoolBrowser
|
||||||
|
//
|
||||||
|
// Created by Robert McGovern on 08/10/2022.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
|
||||||
|
/*
|
||||||
|
Sample:
|
||||||
|
name: string (all text, minus number)
|
||||||
|
number: number (ties to sample)
|
||||||
|
scale: Scale of sample
|
||||||
|
location: string (file path)
|
||||||
|
liked: bool
|
||||||
|
date liked: date
|
||||||
|
length: number (seconds)
|
||||||
|
|
||||||
|
Image(music.note)
|
||||||
|
*/
|
||||||
|
|
||||||
|
struct Sample {
|
||||||
|
var id: UUID
|
||||||
|
var name: String
|
||||||
|
var number: Int
|
||||||
|
var scale: Scale
|
||||||
|
var location: String
|
||||||
|
var liked: Bool
|
||||||
|
var dateLiked: Date
|
||||||
|
var length: Float
|
||||||
|
}
|
|
@ -0,0 +1,13 @@
|
||||||
|
[Tempo]
|
||||||
|
BPM=125
|
||||||
|
|
||||||
|
[HarmonyTable]
|
||||||
|
Scale=C
|
||||||
|
|
||||||
|
Sample1=C
|
||||||
|
Sample2=d
|
||||||
|
Sample3=e
|
||||||
|
Sample4=F
|
||||||
|
Sample5=G
|
||||||
|
Sample6=a
|
||||||
|
Sample7=B
|
|
@ -0,0 +1,13 @@
|
||||||
|
[Tmpo]
|
||||||
|
BPM=1250
|
||||||
|
|
||||||
|
[HamonyTable]
|
||||||
|
Scale=C
|
||||||
|
|
||||||
|
Sample1=c
|
||||||
|
Sample2=d
|
||||||
|
Sample3=e
|
||||||
|
Sample4=z
|
||||||
|
Sample5=G
|
||||||
|
Sample6=a
|
||||||
|
Sample7=d
|
|
@ -0,0 +1,13 @@
|
||||||
|
[Tempo]
|
||||||
|
BPM=80
|
||||||
|
|
||||||
|
[HarmonyTable]
|
||||||
|
Scale=a
|
||||||
|
|
||||||
|
Sample1=a
|
||||||
|
Sample2=B
|
||||||
|
Sample3=C
|
||||||
|
Sample4=d
|
||||||
|
Sample5=e
|
||||||
|
Sample6=F
|
||||||
|
Sample7=G
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -39,3 +39,12 @@ Other file examples of files ...
|
||||||
'Beige Bass 6.wav' 'Gamboge Cello 4.wav' 'Limerick ViolinsB 2.wav' 'Orange Basses 7.wav' 'Orchid Violins 5.wav' 'Viridian Violins 3.wav'
|
'Beige Bass 6.wav' 'Gamboge Cello 4.wav' 'Limerick ViolinsB 2.wav' 'Orange Basses 7.wav' 'Orchid Violins 5.wav' 'Viridian Violins 3.wav'
|
||||||
'Beige Bass 7.wav' 'Gamboge Cello 5.wav' 'Limerick ViolinsB 3.wav' 'Orange Strings 1.wav' 'Orchid Violins 6.wav' 'Viridian Violins 4.wav'
|
'Beige Bass 7.wav' 'Gamboge Cello 5.wav' 'Limerick ViolinsB 3.wav' 'Orange Strings 1.wav' 'Orchid Violins 6.wav' 'Viridian Violins 4.wav'
|
||||||
'Beige StingsB 1.wav' 'Gamboge Cello 6.wav' 'Limerick ViolinsB 4.wav' 'Orange Strings 2.wav' 'Orchid Violins 7.wav' 'Viridian Violins 5.wav'
|
'Beige StingsB 1.wav' 'Gamboge Cello 6.wav' 'Limerick ViolinsB 4.wav' 'Orange Strings 2.wav' 'Orchid Violins 7.wav' 'Viridian Violins 5.wav'
|
||||||
|
|
||||||
|
...
|
||||||
|
|
||||||
|
So I would see it as
|
||||||
|
MovieScore
|
||||||
|
[Vol 1, Vol 2, Vol 3, ...]
|
||||||
|
Vol 1 [Bass, Brass, Drums, Synth, Wind]
|
||||||
|
Bass [Beige Bass, Gamboge BassA, Gamboge Cello, Limerick ViolinsA, Orange Basses, Orange Strings, ....]
|
||||||
|
Beige Bass [ Sample 1, Sample 2, Sample 3, Sample 4, Sample 5, Sample 6, Sample 7]
|
|
@ -28,4 +28,8 @@ Genre Instrument:
|
||||||
sample[number: note] date liked: date
|
sample[number: note] date liked: date
|
||||||
liked: bool length: number (seconds)
|
liked: bool length: number (seconds)
|
||||||
date liked: date scale: note enum
|
date liked: date scale: note enum
|
||||||
date scanned: date
|
date scanned: date samples: [Sample]
|
||||||
|
|
||||||
|
Category:
|
||||||
|
name: String
|
||||||
|
instruments: [Instrument]
|
|
@ -1,7 +1,8 @@
|
||||||
1) try and identify what the k_ w_ o_ on some files mean, if can't then simply strip them off
|
1) try and identify what the k_ w_ o_ on some files mean, if can't then simply strip them off
|
||||||
2) scan folder for genres, then spin of threads to scan instruments, then tracks
|
2) scan folder for genres, then spin of threads to scan instruments, then tracks
|
||||||
3) browser should provide filter down by default of genre, optional filter trackname
|
3) browser should provide filter down by default of genre, optional filter trackname
|
||||||
4) ...
|
4) be able to drag sample into Garageband / Logic
|
||||||
|
5)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
@ -9,3 +10,18 @@ show waveform? https://www.audiokit.io/AudioKitUI/documentation/audiokitui/wavef
|
||||||
|
|
||||||
https://www.audiokit.io/Waveform/documentation/waveform
|
https://www.audiokit.io/Waveform/documentation/waveform
|
||||||
https://github.com/AudioKit/Waveform/
|
https://github.com/AudioKit/Waveform/
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Image names:
|
||||||
|
music.note.house (for top of tree / genre)
|
||||||
|
music.note.house.fill
|
||||||
|
music.note (for sample)
|
||||||
|
music.note.list (for category)
|
||||||
|
|
||||||
|
I like palette rendering for .house .note .list
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
what happens if there are duplicate file names between say Vol 1 and Vol 12 of one Genre, and Vol 3 of a difference Genre?
|
||||||
|
Treat each as unique. So add id.
|
Loading…
Reference in New Issue