SC上で下記を実行して、ユーザーコンフィグディレクトリを調べてください。
Platform.userConfigDir
下記の場所にファイルを置いておくと、SC起動時に読み込まれます。(サブディレクトリも探索されます。)
<ユーザーコンフィグディレクトリ>/Extensions
| import Combine | |
| import SwiftUI | |
| func run1() -> Future<String, Never>{ | |
| return Future{ promise in | |
| promise(.success("OK1: \(Thread.isMainThread)")) | |
| } | |
| } | |
| func run2() -> Future<String, Never>{ |
| <table> | |
| <tbody> | |
| <tr> | |
| <td>13:10</td> | |
| <td colspan="4"><b>挨拶</b></td> | |
| </tr> | |
| <tr> | |
| <td>13:12〜13:30</td> | |
| <td colspan="4"><b>忍者発表会</b></td> | |
| </tr> |
| * 音のブロックを作る + ユーティリティクラス定義 | |
| [| last soundColor controlColor | | |
| Smalltalk garbageCollect. | |
| stage _ ScratchStageMorph allInstances first. | |
| soundColor _ (stage class blockColorFor: 'sound'). | |
| controlColor _ (stage class blockColorFor: 'control'). | |
| last _ nil. | |
| #( | |
| (1.0 |
| | master numbersTable numbersPosition commonParts toShowParts toHideParts | | |
| "assume there are sprites named 'master' and 'separator', then run inside ScratchStageMorph" | |
| (self sprites | |
| reject: [:x| {'master' asUTF8. 'separator' asUTF8} includes: x objName]) do: [:x | x delete]. | |
| master _ self sprites detect: [:x| x objName = 'master']. | |
| numbersTable := #( |
| Lemma exo0 : forall P : Prop, P -> P. | |
| Proof. | |
| move=> P. | |
| move=> P2. | |
| apply P2. | |
| Qed. |
| somCodePath := (FileSystem disk workingDirectory path parent parent parent parent / 'som-code') asFileReference asString. | |
| SOMTools setClassPathBase: somCodePath; recompile. |
| (global-set-key (kbd "s-f") (lambda () (interactive) (sclang-eval-string "s.freqscope"))) | |
| (global-set-key (kbd "s-C-s") (lambda () (interactive) (sclang-eval-string "Server.local.makeGui;Server.internal.makeGui"))) | |
| (global-set-key (kbd "s-y") (lambda () (interactive) | |
| (sc-eval-paragraph) | |
| (lap-stopwatch))) | |
| (global-set-key (kbd "C-s-y") 'clear-stopwatch) | |
| (global-set-key (kbd "s-w") 'show-stopwatch) | |
| (global-set-key (kbd "s-e") 'replace-with-twice) | |
| (global-set-key (kbd "C-s-e") 'replace-with-half) | |
| (global-set-key (kbd "s-h") 'sclang-eval-line) |
| (defun delete-outer-char (&optional b e) | |
| (interactive "r") | |
| (delete-region (- e 1) e) | |
| (delete-region b (+ b 1))) |
| // ・Resonzのノイズは、各音の始まりだけに混じるようにする | |
| // ・音が長いところは、後半にビブラートかける(音量に揺れができる) | |
| // ・息継ぎがないので、どこかのタイミングで(1フレーズごと?)に音を切る | |
| ( | |
| SynthDef(\main, { |out=0, note=81, next=81, dur=1, gate = 1, tempo=1, breath=0| | |
| var freq = [note, note+Rand(-0.02,0.02)!3, next].midicps; | |
| var d = dur / tempo; | |
| var t = d / 4.0; | |
| var freqEnv = EnvGen.ar(Env(freq, [t * 3, t], \exp)); | |
| var cross = d / 32.0; |