Add code for creating project in emacs

main
lambda 3 months ago
parent cf72bf4330
commit b94a9b7112
Signed by: lambda
GPG Key ID: 07006F27729676AE

@ -0,0 +1,50 @@
(defun create-scd-project ()
"Create a new project directory with a samples subdirectory and a main.scd file containing SuperCollider code."
(interactive)
(let* ((project-path (read-directory-name "Project path: " default-directory))
(project-name (read-string "Project name: "))
(full-path (expand-file-name project-name project-path))
(samples-path (expand-file-name "samples" full-path))
(main-file (expand-file-name "main.scd" full-path))
(supercollider-code (format
"(
s.options.memSize_(2.pow(20));
s.waitForBoot({
~makeBuffers = { |path, event, mono = false|
var dir = PathName.new(path);
var contents = dir.entries;
if (contents.select({ |n| n.isFile }).size > 0)
{
var files, bufArray;
files = contents.select({ |n| n.isFile });
files = files.select({ |n|
[\"aif\", \"aiff\", \"wav\"].includesEqual(n.extension)
});
if (event[dir.folderName.asSymbol] != nil)
{ \"duplicate subfolder name ignored\".warn; }
{
bufArray = files.collect({ |n|
if(mono)
{ Buffer.readChannel(s, n.fullPath, channels:[0]) }
{ Buffer.read(s, n.fullPath) };
});
event[dir.folderName.asSymbol] = bufArray;
};
};
if (contents.select({ |n| n.isFolder }).size > 0)
{
var folders = contents.select({ |n| n.isFolder });
folders.do({ |n| ~makeBuffers.(n.fullPath, event, mono) });
};
event;
};
~samples = ~makeBuffers.(\"%s\", ());
});
)"
samples-path)))
(make-directory full-path t)
(make-directory samples-path t)
(with-temp-file main-file
(insert supercollider-code))
(find-file main-file)
(save-buffer)))

@ -8,4 +8,5 @@ between my SuperCollider projects
nodes from declarative definitions
- quarks
Quarks and Extentions I usally use for projects
- projects
code for SuperCollider projects maintaining

Loading…
Cancel
Save