java实现粤语歌曲0243填词法

2023-10-14 01:20

本文主要是介绍java实现粤语歌曲0243填词法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

粤语歌曲填词法

一、前言

转化成数字歌。对每个音符,提供配合广东话声调的字,选出成为歌词。可以在网上创作,或下载到自己电脑中使用。
在这里插入图片描述
简谱 3656536,歌词 落花满天蔽月光。 唱起来配合乐曲音调。这叫做‘叶韵’,又叫做‘协音’。
如果随便拿句说话来唱,譬如‘我下昼要去买餸’,唱起来会变成‘饿虾昼腰去卖鬆’。七个字里有五个字不能配合乐曲音调,这叫做‘拗音’。要尽量避免歌词拗音,听众容易知道原来的字,不太逆耳的,有时也可以接受。不要因为微小拗音就放弃最好的词句。

二、代碼

@Overridepublic String[] createTianci(String content) throws Exception {String result[] = new String[2];String record = "";String record2 = "";String[] characters = new String[content.length()];record+=content+"\r\n\r\n";for (int m = 0; m < content.length(); m++) {characters[m] = String.valueOf(content.charAt(m));Map<String,Object> map = new HashMap<>();map.put("eq_name", characters[m]);SongYueyu songYueyu = songYueyuService.getOne(map);if(songYueyu!=null){String yy = songYueyu.getY2();String yy2 = songYueyu.getY2();Map<String,Object> map2 = new HashMap<>();map2.put("eq_y2", yy2);map2.put("noteq_name", characters[m]);List<SongYueyu> songYueyu2s = songYueyuService.list(map2);String yy3 = "~";if(songYueyu2s.size()>0){for (SongYueyu songYueyu3 : songYueyu2s){yy3+= songYueyu3.getName()+"‘";}}record+=yy+" ";record2+=yy3+"~ \r\n";}else {record+="?"+" ";}}result[0] = record;result[1] = record2;return result;}

在这里插入图片描述

广东话歌曲填词,须具备三项基本能力:

  1. 对音乐旋律和节奏,能够感应它要表达的情感,而产生共鸣。

这方面的知识和能力,不在本文讨论范围内。况且,对音乐无动于中的人,相信也不会有兴趣填词。

  1. 对中文有充份认识,能写流利和有文采的文字。

最好是熟读和背诵大量诗词散文,灵活模仿运用。再不然就要懂得修辞学,留心使用。这方面的知识,从古代的文心雕龙,到现代的歌词修辞学,都很容易在图书馆或互联网上寻到。这也不在本文讨论范围内。

  1. 能讲广东话,能判断字的广东读音是否合符乐曲音调。

一、母语不是粤语(或不精通粤语)可否完成粤语填词?二、非粤语母语者的填词人王久平,所创作的粤语歌词,唱起来不太顺口;母语是粤语的词作者林夕,国语作词作品却屡有佳作。原因为何?

我们先回答第一个问题。其他语言不知道,但是粤语必须要精通,如果不掌握粤语,则无法填粤语歌词。
能观察到这个现象,说明你对歌曲填词的倚声填词,因曲发声的概念开始有所觉察了。因为粤语歌曲填词,对于歌词声调与旋律音高的绝对和相对的对应关系,都有着极低的容错率,换句话说,如果哪一个字或哪一个词语的调型,与此处旋律音高的走向不相一致的话,那么这首歌将是一首错误的歌。

粤语声调是九声六调,调值、调型的分布如下。从下图可以直观地观察到每一个声调的走势。

粤语九声六调调值图1

粤语九声六调调值表2
例如说粤语的第二声,调值是35,走势是向上升起的,那么在填入乐曲时,这个乐曲旋律的音高,应该是相对上升的。以《富士山下》为例,我们先来看5612123/5612121这两个乐句

凡是标注绿色箭头的字,在旋律音高都呈现出向上的趋势,如:你(nei5),我(ngo5),雨(jyu5),彼(bei2)这几个字,对照上文的两个调值表可以知道,这几个字在粤语声调中分别为第二声,第五声,第二声和第五声的调值特点即为向上扬起。那么将这几个字填入这样的旋律中,就是正确的。
再举一个反面例子,《笑纳》中的这一句粤语歌词,填词人非粤语母语者。

第一句歌词的粤语拼音为“撑(caang1)伞(saan3)接(zip3)落(lok6)花(fa)”
这一句的调型排列图应该是 55-33-33-22-55,如果把这个调值的排列顺序放进钢琴卷帘里,以直观的图片来表现,应该是如此

再看这个乐句的简谱旋律的钢琴窗,有一些时值很短的装饰音,可以忽略。

将二者对比起来看

红色为歌词声调的走向,绿色为旋律音高的走向,可以看出,两个走向相当不一致,甚至是互相违背的。因此这句粤语歌词是相当不正确的。

可见,要填粤语歌词,必须要懂得将一个字或词语,填到它应该适用的位置,必须要非常严格地“对号入座”,这种对应就叫做“词曲协音”,如果稍微有一些对应失当,那么就是“不协音”,不协和的歌词与乐曲,就是失败的,错误的,不正确的。
但很可惜,并不是每一个填词的人都具备这样的知识储备,或者说没有对陌生语言的领域的敬畏之心、谦逊之心,因此市面上有非常大量的并不正确的粤语歌,如《野狼disco》、《大风吹》、《秒针》,其粤语部分都是错误的。
当然,其实在粤语填词的更早些年代,如上世纪六七十年代,其实也是有许多粤语歌曲并不讲究“协音”的,例如“《初恋》这首歌中“爱恋没经验,今天初发现”的“今天”两字,或者《上海滩》中“万里滔滔江水永不休”的“滔滔”两字。因为粤语填词的“协音”要求,确实是逐渐发展得严格起来的,在更早一些时候,我们对粤语歌曲填词尚未有作出这样的要求。而且,其实在不影响听众理解的情况下,这两个词语,是可以结合上下文语境做出理解的,比如,虽然“今天”这两个字的发音与旋律相违背,但我们只需要听到“初发现”这三个字,就可以大致猜出前面的两个字。又如,“滔滔”两个字的走向虽然与乐曲不一致,但后文听到“江水”也能够推测出前文的“滔滔”。因此,为数不多的“不协音”并不会影响听众的理解,也就无可厚非。
所以其实我们所说的“协音”是一种相对的关系,而非绝对的关系。衡量粤语歌曲是否正确的标准,是需要置身于整个环境来听的。
但可怕的是,较多的母语非粤语的填词人,在写粤语歌词时,想当然地使用了普通话的语法和词汇,寄希望于歌手用粤语的发音,来将歌曲完善成为一首“粤语歌”。这是非常傲慢的一种做法。因为语音词汇语法是构成一门语言的三个要素,三者缺一不可。对填词人来说,掌握语言的运用犹如打下基础,而创作则像是更高阶的一种技能。不夯实地基,就去好高骛远,那么哪怕只是一两句,也会非常奇怪。

第二个问题,非粤语母语者的填词人王久平,所创作的粤语歌词,唱起来不太顺口;母语是粤语的词作者林夕,国语作词作品却屡有佳作。原因为何?
首先我们要确认的问题,是“是不是”,而非“为什么”。
我没有遍阅林夕所有作品,但阅读林夕作品的数量,较常人应该更多一些。林夕的填词作品,其实也有相当多的“行货”。在他浩如烟海的众多作品之中,“经典”“佳作”“行货”的比例,我个人认为是,1:2:7 这样的比例(评判标准比较私人,纯属个人意见,如有偏颇请见谅)而在国语作品之中产生的“佳作”,相比起粤语作品之中产生的“佳作”,数量和质量都相差悬殊。所以坦白说,我不认同林夕的国语作品是“佳作频出”的这个观点。
但如果要与非粤语母语者去填粤语词相比的话,你的观察是有道理的。
因为在同等的条件下(年龄、学习能力、悟性相当的情况),国语母语者的人学习粤语的学习成本,远远大于粤语母语者学习国语的学习成本。而国语母语者学粤语的回报率,远远低于粤语母语者学国语的回报率。因为粤语与国语在语音、语法、词汇方面的差异和区隔,已经相当大了。
我们分开学习成本和回报率两个角度来讨论。首先是学习成本:
现行的现代汉语的操语者,如果在母语后再去习得一门新的语言(如粤语),需要克服的难点,一个是粤语语音中极难发音的一些声韵母,一个是粤语独有的语法和语序,一个是粤语中独有的新奇词汇,一个是非常难以获得的语言环境(粤语的使用范围已定)。对于母语是现代汉语的人来说,察觉粤语语音中的某些音节已经是非常困难的事情。比如,她们很难听得出高平和低平的区别,高升和中升的区别,也很难发得出(oeng)这个韵母,或(ng)这个声母,更难发出韵尾是(ktp)的切音。用大白话说,就是母语里没有这些。

而一个粤语母语者要学习国语,学习成本是相对较低的(和国语母语者学粤语相比)。首先,语音方面,粤语母语者学习国语时,虽然确实有一些难度(如粤语中只有翘舌音没有平舌音、粤语中没有汉语第三声),但对比起来难度已经较小了;其次词汇方面,有些词虽然在粤语地区有独特叫法,但国语的叫法他们也能够接受。如香港习惯的某些称呼,草莓-士多啤梨,土豆-薯仔,手机-电话,充电宝-尿袋,粤语母语者同时能够理解这些国语的叫法;最后,在语法方面,即便是略有不同的语序,也能够在表达出来以后,令国语母语者理解。
然后是回报率:
国语母语者要学粤语到一个令粤语操语者能够听懂的地步,基本上要把粤语说得七七八八,大差不差,即,能够把粤语的语素以一个有组织的形式构成完整的句子或段落。这样,粤语操语者才能够听懂。而粤语母语者说国语,即便不太完整,不太正确,甚至“夹生”,我们作为国语母语者也能通过前后文,语境等场外因素大致听懂(如蔡少芬、古天乐、黎诺懿等)

这两种情况总结起来,其实就是国语母语者学习粤语的投入和回报情况,不如粤语母语者学习国语的投入和回报情况乐观。

这篇关于java实现粤语歌曲0243填词法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/207140

相关文章

Spring Boot整合Redis注解实现增删改查功能(Redis注解使用)

《SpringBoot整合Redis注解实现增删改查功能(Redis注解使用)》文章介绍了如何使用SpringBoot整合Redis注解实现增删改查功能,包括配置、实体类、Repository、Se... 目录配置Redis连接定义实体类创建Repository接口增删改查操作示例插入数据查询数据删除数据更

Java Lettuce 客户端入门到生产的实现步骤

《JavaLettuce客户端入门到生产的实现步骤》本文主要介绍了JavaLettuce客户端入门到生产的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目录1 安装依赖MavenGradle2 最小化连接示例3 核心特性速览4 生产环境配置建议5 常见问题

Java使用Swing生成一个最大公约数计算器

《Java使用Swing生成一个最大公约数计算器》这篇文章主要为大家详细介绍了Java使用Swing生成一个最大公约数计算器的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下... 目录第一步:利用欧几里得算法计算最大公约数欧几里得算法的证明情形 1:b=0情形 2:b>0完成相关代码第二步:加

linux ssh如何实现增加访问端口

《linuxssh如何实现增加访问端口》Linux中SSH默认使用22端口,为了增强安全性或满足特定需求,可以通过修改SSH配置来增加或更改SSH访问端口,具体步骤包括修改SSH配置文件、增加或修改... 目录1. 修改 SSH 配置文件2. 增加或修改端口3. 保存并退出编辑器4. 更新防火墙规则使用uf

Java 的ArrayList集合底层实现与最佳实践

《Java的ArrayList集合底层实现与最佳实践》本文主要介绍了Java的ArrayList集合类的核心概念、底层实现、关键成员变量、初始化机制、容量演变、扩容机制、性能分析、核心方法源码解析、... 目录1. 核心概念与底层实现1.1 ArrayList 的本质1.1.1 底层数据结构JDK 1.7

Java Map排序如何按照值按照键排序

《JavaMap排序如何按照值按照键排序》该文章主要介绍Java中三种Map(HashMap、LinkedHashMap、TreeMap)的默认排序行为及实现按键排序和按值排序的方法,每种方法结合实... 目录一、先理清 3 种 Map 的默认排序行为二、按「键」排序的实现方式1. 方式 1:用 TreeM

Java中流式并行操作parallelStream的原理和使用方法

《Java中流式并行操作parallelStream的原理和使用方法》本文详细介绍了Java中的并行流(parallelStream)的原理、正确使用方法以及在实际业务中的应用案例,并指出在使用并行流... 目录Java中流式并行操作parallelStream0. 问题的产生1. 什么是parallelS

C++中unordered_set哈希集合的实现

《C++中unordered_set哈希集合的实现》std::unordered_set是C++标准库中的无序关联容器,基于哈希表实现,具有元素唯一性和无序性特点,本文就来详细的介绍一下unorder... 目录一、概述二、头文件与命名空间三、常用方法与示例1. 构造与析构2. 迭代器与遍历3. 容量相关4

Java中Redisson 的原理深度解析

《Java中Redisson的原理深度解析》Redisson是一个高性能的Redis客户端,它通过将Redis数据结构映射为Java对象和分布式对象,实现了在Java应用中方便地使用Redis,本文... 目录前言一、核心设计理念二、核心架构与通信层1. 基于 Netty 的异步非阻塞通信2. 编解码器三、

C++中悬垂引用(Dangling Reference) 的实现

《C++中悬垂引用(DanglingReference)的实现》C++中的悬垂引用指引用绑定的对象被销毁后引用仍存在的情况,会导致访问无效内存,下面就来详细的介绍一下产生的原因以及如何避免,感兴趣... 目录悬垂引用的产生原因1. 引用绑定到局部变量,变量超出作用域后销毁2. 引用绑定到动态分配的对象,对象