Japanese Folk

Japanese Folk

Japan

Japanese Folk 是日本各地区在长期历史发展中形成的民间音乐传统,广义上涵盖日本传统民歌、劳动歌谣、祭典音乐、舞蹈音乐及地方性叙事演唱;在现代音乐分类中,也常用于指称继承日本民间旋律、乐器和文化意象的现代 Folk 创作。其传统根植于农业社会、渔业劳动、宗教仪式、地方祭典及日常生活,并通过口传、社区活动和职业艺人的表演世代传承。由于日本各地的语言、方言、地理环境及历史文化存在显著差异,Japanese Folk 并非具有统一音乐规范的单一风格,而是由众多地方性音乐传统构成的复杂体系。

日本传统民歌通常称为 Min'yō(民謡),是 Japanese Folk 最重要的组成部分之一。其内容包括劳动号子、渔歌、山歌、节庆歌曲、祝仪歌及地方叙事歌谣。不同地区形成了鲜明的演唱特色,例如北海道的渔业劳动歌、东北地区的民间歌谣、关西地区的节庆音乐,以及冲绳和奄美群岛具有独特语言与旋律体系的岛屿歌谣。部分民歌具有明确的劳动功能,通过重复节奏和集体呼应协调工作;另一些则用于盂兰盆舞、地方祭典及社交活动,具有鲜明的舞蹈性和社区参与特征。Min'yō 的旋律通常具有较强的地方色彩,演唱者经常运用 Kobushi(こぶし)等装饰性唱腔,通过音高滑动和旋律变化强化表达。

在音乐语言方面,日本民间音乐常使用具有五声音阶特征的旋律体系,但不同地区和传统之间存在显著差异。Yona Nuki 音阶及其相关旋律组织在部分民歌中较为常见,冲绳音乐则经常使用与本土传统相关的独特音阶。节奏既包括自由节拍的抒情演唱,也包括适合劳动和集体舞蹈的规律性节奏。传统伴奏乐器包括 Shamisen(三味线)、Shakuhachi(尺八)、Koto(筝)、Taiko(太鼓)及 Shinobue(篠笛)等。不同地区还发展出独特的乐器组合,例如冲绳民间音乐经常以 Sanshin(三线)伴奏,形成区别于日本本土其他地区的音色与演唱风格。

Japanese Folk 不仅存在于传统村落音乐中,也与日本的戏剧、说唱及宗教音乐长期交流。Kabuki、Bunraku 和各种地方艺能吸收了民歌及器乐传统,并形成更具戏剧性和叙事性的音乐形式。盂兰盆舞和地方祭典则持续为民间音乐提供实际表演环境,使许多歌曲能够在社区生活中不断变化和延续。冲绳的岛歌传统、东北地区的民谣以及各地的劳动歌谣,分别体现了不同地域的语言、历史和社会文化经验,不能简单归纳为统一的日本民族音乐风格。

20 世纪以来,唱片工业、广播、学校教育及民族音乐研究推动了 Min'yō 的记录与传播。三桥美智也、三波春夫等歌手通过商业录音使传统民谣进入大众流行文化。与此同时,日本现代 Folk 在 60 年代末至 70 年代逐渐发展,创作者开始借鉴美国 Folk Revival、Singer-Songwriter 和 Folk Rock 的创作方式,并将日本社会经验、文学传统及本土文化意识融入原创歌曲。高田渡、冈林信康、五つの赤い風船等音乐人推动了这一创作潮流。此后,传统民谣与 Folk Rock、J-Pop、Indie Folk 及实验音乐不断交汇,使 Japanese Folk 同时保留地方性传统与现代原创音乐的发展空间。

Evaluation Error: SyntaxError: Invalid regular expression: missing /
    at DataviewInlineApi.<anonymous> (plugin:dataview:19027:21)
    at evalInContext (plugin:dataview:19028:7)
    at asyncEvalInContext (plugin:dataview:19038:32)
    at DataviewJSRenderer.render (plugin:dataview:19064:19)
    at DataviewJSRenderer.onload (plugin:dataview:18606:14)
    at DataviewJSRenderer.load (app://obsidian.md/app.js:205:11318)
    at DataviewApi.executeJs (plugin:dataview:19607:18)
    at DataviewCompiler.<anonymous> (plugin:digitalgarden:12669:23)
    at Generator.next (<anonymous>)
    at fulfilled (plugin:digitalgarden:92:24)
[\s\S]*?```/g, "");

return text
.split(/\r?\n\s*\r?\n/)
.map(paragraph => paragraph.trim())
.filter(paragraph => {

if (!paragraph) return false;

// 标题、引用、表格、图片、分隔线不取
if (/^#{1,6}\s/.test(paragraph)) return false;
if (/^>/.test(paragraph)) return false;
if (/^|/.test(paragraph)) return false;
if (/^![/.test(paragraph)) return false;
if (/^(-{3,}|*{3,})$/.test(paragraph)) return false;

return true;
})
.slice(0, limit)
.map(stripMarkdown)
.filter(Boolean);
}

// 读取正文(异步):已有 summary 的文章不必读文件
const articleCards = await Promise.all(
matchedArticles.map(async page => {

let excerpt = [];

const hasSummary = page.summary !== null &&
page.summary !== undefined &&
String(page.summary).trim() !== "";

if (!hasSummary) {

const file = app.vault.getAbstractFileByPath(page.file.path);

if (file) {
try {
const content = await app.vault.cachedRead(file);
excerpt = extractExcerpt(content, 3);
} catch (e) {
excerpt = [];
}
}
}

return { page, excerpt };
})
);

// ==========================
// 7. 渲染
// ==========================

if (articleCards.length > 0) {

const gallery = createElement(
dv.container,
"div",
"person-article-gallery"
);

articleCards.forEach(({ page, excerpt }) => {

const card = createElement(
gallery,
"div",
"person-article-card"
);

// --------------------------
// 第一、二行:标题、年份、作者
// --------------------------

const left = createElement(
card,
"div",
"person-article-card__left"
);

const titleText = String(page.title || page.file.name);

const heading = createElement(
left,
"h2",
"person-article-card__title"
);

const titleLink = createElement(
heading,
"a",
"",
titleText
);

titleLink.href = "#";
titleLink.title = titleText;

titleLink.addEventListener("click", event => {
event.preventDefault();
event.stopPropagation();

app.workspace.openLinkText(
page.file.path,
currentPerson.file.path,
false
);
});

// 出版年
if (
page.datePublished !== null &&
page.datePublished !== undefined &&
String(page.datePublished).trim() !== ""
) {
createElement(
left,
"div",
"person-article-card__year",
String(page.datePublished)
);
}

// 作者
const authorText = getText(page.author, " / ");

if (authorText) {
createElement(
left,
"div",
"person-article-card__author",
authorText
);
}

// --------------------------
// 第三行:正文
// summary 优先,缺失时回退到正文前三段
// --------------------------

const summaryText = page.summary
? String(page.summary).trim()
: "";

let bodyParagraphs = [];

if (summaryText) {

bodyParagraphs = summaryText
.split(/\n+/)
.map(paragraph => stripMarkdown(paragraph.trim()))
.filter(Boolean);

} else {

bodyParagraphs = excerpt;
}

if (bodyParagraphs.length > 0) {

const right = createElement(
card,
"div",
"person-article-card__right"
);

const scrollArea = createElement(
right,
"div",
"person-article-card__excerpt-scroll"
);

bodyParagraphs.forEach(paragraph => {
createElement(
scrollArea,
"p",
"person-article-card__text",
paragraph
);
});
}

// --------------------------
// 第四行:标签
// --------------------------

const tags = getList(page.tags)
.map(cleanTag)
.filter(Boolean);

if (tags.length > 0) {

const tagWrap = createElement(
card,
"div",
"person-article-card__tags"
);

tags.forEach(tag => {

const matches = pageIndex[normalizeName(tag)] || [];

// 唯一匹配:可点击的内部链接
if (matches.length === 1) {

const matchedPage = matches[0];

const link = createElement(
tagWrap,
"a",
"person-article-card__tag person-article-card__tag--linked",
tag
);

link.href = "#";
link.title = "打开页面:" + tag;

link.addEventListener("click", event => {
event.preventDefault();
event.stopPropagation();

app.workspace.openLinkText(
matchedPage.file.path,
currentPerson.file.path,
false
);
});

}

// 无匹配或多重匹配:半透明
else {

const label = createElement(
tagWrap,
"span",
"person-article-card__tag person-article-card__tag--missing",
tag
);

label.title = matches.length > 1
? "存在多个同名页面,无法确定链接"
: "尚无对应的页面";
}
});
}
});
}