Skip to content

Latest commit

 

History

History
407 lines (285 loc) · 12 KB

File metadata and controls

407 lines (285 loc) · 12 KB
Error in user YAML: (<unknown>): found a tab character that violate indentation while scanning a plain scalar at line 3 column 3
---
- oeasy Python 0104
- 这是 oeasy 系统化 Python 教程,从基础一步步讲,扎实、完整、不跳步。愿意花时间学,就能真正学会。
- 本教程同步发布在: 
	- 个人网站: `https://oeasy.org` 
	- 蓝桥云课: `https://www.lanqiao.cn/courses/3584` 
	- GitHub: `https://github.com/overmind1980/oeasy-python-tutorial` 
	- Gitee: `https://gitee.com/overmind1980/oeasypython` 
---

回环诗_旋律模进_开嗓音频生成_sequence

回忆

图片描述

  • 这很像 衔尾蛇

图片描述

  • 绕了一圈 又回到了原点
    • 诗歌 里面也有这种 衔尾蛇 吗?🤔

首尾吟

  • 《首尾吟》

尧夫非是爱吟诗 - 诗是尧夫服老时

简尺每称林下士 - 过从或著道家衣

须将贤杰同星汉 - 直把身心比鹿麋

六十五年无事客 - 尧夫非是爱吟诗

  • 翻译到今天

不是尧夫爱唠叨 - 话到嘴边憋不了

平时都叫随性佬 - 出门常穿破外套

遇事只服硬气佬 - 待人愿当暖心袄

六十多年没烦扰 - 不是尧夫爱唠叨

  • 这 尧夫 谁啊?
    • 这诗 做的 挺饶舌

邵雍

  • 北宋五子之一
    • 邵雍(1011-1077)
    • 字尧夫
    • 号安乐先生
  • 尧夫 就是 邵雍自己

图片描述

  • 《首尾吟》
    • 共135首
    • 均以 尧夫非是爱吟诗
  • 你说他 到底 爱不爱 吟诗?😊

python判断

图片描述

# 1. 无标点的邵雍《首尾吟》全诗(纯文字,直接替换成你的诗歌即可)
pure_poem = "尧夫非是爱吟诗诗到忘言是尽时虽则借言通要妙又须从物见几微羹因不和方知淡乐为无声始识希多少风花待除改尧夫非是爱吟诗"

# 2. 提取前7字(第一句)和后7字(最后一句)
first_7 = pure_poem[:7]  # 取字符串开头7个字符
last_7 = pure_poem[-7:]  # 取字符串结尾7个字符

# 3. 判断是否相等,输出首尾吟验证结果
print("诗歌前7字(第一句):", first_7)
print("诗歌后7字(最后一句):", last_7)
print("-" * 30)
if first_7 == last_7:
    print("✅ 验证通过:前7字与后7字完全一致,符合首尾吟特征!")
else:
    print("❌ 验证未通过:前7字与后7字不一致,不符合首尾吟特征。")
  • 尧夫 唱了(call) 之后
    • 有个人 和(response) 诗
    • 谁呢?

  • 程颢(hào) 、 邵雍
    • 同时代的人
    • 都是 北宋五子
  • 和诗
    • 首尾改为
      • 先生非是爱吟诗

图片描述

  • 《和尧夫首尾吟》
    • 先生非是爱吟诗
    • 为要形容至乐时
    • 醉里乾坤都寓物
    • 閒来风月更输谁
    • 死生有命人何预
    • 消长随时我不悲
    • 直对希夷无事处
    • 先生非是爱吟诗
  • 不过 他的老师
    • 不是 邵雍

北宋五子

  • 他的老师 是
    • 北宋五子男团的精神领袖
    • 周敦颐

图片描述

  • 程颢
    • 北宋五子 男团
    • 里面 氛围担当

北宋五子担当简表

成员 核心担当 核心理由 代表作品 舞台风格
周敦颐 精神领袖 理学开山,《爱莲说》显清雅 《爱莲说》
《太极图说》
温润庄重
邵雍 民谣主唱
治愈担
著《击壤集》,诗传豁达 《击壤集》
《皇极经世书》
亲切松弛
张载 队长
正能量发言
“横渠四句”显担当,掌团队方向 《正蒙》“横渠四句” 挺拔有力
程颢 氛围
互动达人
“如坐春风”,善调氛围 《识仁篇》“洛学” 亲和带综艺感
程颐 实力
学术指导
提“格物致知”,控学术质量 《伊川易传》
《二程遗书》
严肃输出知识点
  • 周敦颐 是 精神领袖
    • 有什么作品吗?

爱莲说

  • 熟悉他一篇文章

图片描述

  • 花 像人一样 有品格

    • 不像 牡丹一样 富贵
    • 也不像 菊花一样 隐逸
  • 他种了 好些莲花

    • 出淤泥而不染
    • 濯清涟而不妖
    • 中通外直
    • 不蔓不枝
    • 香远益清
    • 亭亭净植
    • 可远观而不可亵玩焉
  • 哲学层面 会影响 到 其他方面

太极图

  • 太极图 是他开始 画的
    • 5 层
      • 万物化生
      • 坤道成女与乾道成男
      • 木火土金水
      • 阴静阳动
      • 无名的圆框
    • 无极而太极
    • 太极生两仪

图片描述

  • 少年王安石 多次拜访 周敦颐

制度改革

  • 王安石 别的没学会
    • 学会了 乾道成男 坤道成女
    • 斗争这一套

图片描述

  • 后来 他
    • 彻底 不合作 了
    • 成了 拗相公
    • 天变都不足畏 了
  • 周敦颐一看 这哪行啊?

圜道

  • 阴阳 是不一样的
    • 但是 也是可以 相互转化的
    • 有周期性 规律的
  • 王安石
    • 太激进
    • 走太远

图片描述

  • 周敦颐 跟他不是一路人

王安石改革(熙宁变法)后新旧党境遇对比

  • 熙宁变法 新旧对比
    • 总会有更新的
阶段 皇权背景 旧党核心动态 新党核心动态 关键事件
变法推行期(新党主导) 宋神宗(支持新党) 司马光、苏轼反新法
多数被排挤出中央或退隐
王安石掌权,推新法
吸纳章惇等巩固权力
新法颁布
司马光编《资治通鉴》
元祐更化期(旧党复辟) 高太后(反新法) 核心成员回朝
废新法、打压新党
王安石病逝
核心成员被罢官外放
“元祐更化”
新党失势
绍圣绍述期(新党反攻) 宋哲宗(支持新党) 被定“元祐奸党”
核心成员被贬偏远地区
章惇、蔡京掌权
复新法、清算旧党
立“元祐党人碑”
苏轼被贬儋州
徽宗至北宋灭亡(两党衰落) 宋徽宗(蔡京掌权) 集团瓦解
成员多隐居或无实权
新党分裂
蔡京擅权,新法失初衷
靖康之变
北宋灭亡
  • 周而复始
    • 螺旋上升
    • 波浪前进

规律

“历史不会重演,但会押韵”

  • 历史 不会完全复刻过去
    • 不同时期的事情在本质、逻辑或发展轨迹上
      • 存在 相似性
    • 就像 诗歌押韵般
      • 有着呼应的节奏

图片描述

  • 苏轼 人生经历了 这个过程
    • 看透了 这变化

苏轼绝笔

  • 临终写了 首尾吟

庐山烟雨浙江潮 - 未到千般恨不消

到得还来别无事 - 庐山烟雨浙江潮

图片描述

  • 可以让ai帮我们写个首尾吟吗?

提问

图片描述

  • 可以 给首尾吟
    • 谱个曲子 吗?

曲谱

心同濂水净无沙
独爱莲芳自洁华
千载清风传雅韵
心同濂水净无沙

图片描述

根据这首,首尾吟的 28 个字,用python写一个 midi, 每个字对应一个音符。总共四句,这四句中的前六个字呢对应四分音符,最后一个字要押韵,对应一个二分音符。整体的诗歌呢要符合羽调式,所有音符都在羽调式调内,四句话起承转合。每行最后一个音符,尽量押韵。

代码

from mido import Message, MidiFile, MidiTrack, MetaMessage
import random

# 羽调式(A羽)音符库(按音高排序,五声音阶加上高八度羽音)
# A2 (57) 作为基础音(羽音),包含高八度羽音A3 (69)
yu_mode_notes = [57, 60, 62, 64, 67, 69]  # A(57)-羽、C(60)-宫、D(62)-商、E(64)-角、G(67)-徵、A(69)-高八度羽

# 诗句与节奏配置:前6字=四分音符(480 ticks),末字=二分音符(960 ticks)
poem = "心同濂水净无沙独爱莲芳自洁华千载清风传雅韵心同濂水净无沙"
rhythms = [480]*6 + [960]  # 单句节奏模板
all_rhythms = rhythms * 4  # 四句完整节奏

# 创建MIDI文件(1拍=480 ticks,速度120BPM)
mid = MidiFile(type=1, ticks_per_beat=480)
track = MidiTrack()
mid.tracks.append(track)

# 添加乐器(钢琴音色)和速度信息
track.append(Message('program_change', program=0, time=0))
track.append(MetaMessage('set_tempo', tempo=500000, time=0))  # 120BPM

# 生成音符:起承转合对应音高起伏,且第一句和最后一句旋律相同
note_index = 0
first_line_notes = []  # 用于存储第一句的音符序列

# 定义每行最后一个字使用的押韵音符(羽调式主音)
rhyming_note = yu_mode_notes[0]  # 使用基础羽音(57)作为押韵音

for i, char in enumerate(poem):
    # 判断是否为行尾最后一个字(每行第7个字)
    is_end_of_line = (i + 1) % 7 == 0
    
    # 行尾直接使用押韵音
    if is_end_of_line :
        note = rhyming_note  # 行尾使用押韵音
    else:
        # 起承转合音高设计(非行尾音符)
        if i < 7:  # 起句(前7字):中低音区
            note = yu_mode_notes[random.randint(0, 2)]  # 羽、宫、商(低音区)
            first_line_notes.append(note)  # 记录第一句的音符
        elif 7 <= i < 14:  # 承句(中间7字):略升
            note = yu_mode_notes[random.randint(1, 4)]  # 宫、商、角、徵(中高音区)
        elif 14 <= i < 21:  # 转句(后7字):高音区
            note = yu_mode_notes[random.randint(3, 5)]  # 角、徵、高八度羽(高音区)
        else:  # 合句(最后7字):与第一句旋律相同
            note = first_line_notes[i - 21]  # 复用第一句的音符序列
    
    # 添加音符(力度50-70,柔和贴合诗意)
    velocity = random.randint(50, 70)
    track.append(Message('note_on', note=note, velocity=velocity, time=0))
    track.append(Message('note_off', note=note, velocity=0, time=all_rhythms[note_index]))
    note_index += 1

# 保存MIDI文件
mid.save('咏濂溪首尾吟.mid')
print("MIDI文件已生成:咏濂溪首尾吟.mid")

效果

图片描述

  • 别的艺术 也有
    • 这种 首尾循环的吗?

从前有座山

  • 绕口令技巧

图片描述

电影

  • 首尾闭环

图片描述

  • 有这种谱子吗?

旋律

  • 茉莉花

图片描述

  • 西方呢?

西方音乐

  • 棒棒棒棒

图片描述

  • 管这个叫bookend

图片描述

  • 就像 书架两面的挡头

小星星

  • 小星星
    • 1155665 4433221
    • 首尾都有出现

图片描述

再提问

  • 其实我们熟悉的小星星
    • 也有这种 首尾呼应的感觉

图片描述

总结🤔

  • 这次研究了 首尾吟
    • 事情总是 绕圈重复
    • 我们需要 找到规律

图片描述

  • 文字 除了 首尾呼应之外
    • 也可以 层叠递进 吗?
  • 下次再说 👋
  • 配套视频

  • 本文来自 oeasy Python 系统教程。
  • 想完整、扎实学 Python,
  • 搜索 oeasy 即可。